有人可以解释一下这个结果吗?
好吧,这是我的代码:
public class foo <T> {
public static void main(String[] args) {
foo Foo = new foo();
System.out.println(Foo.compare(100L, 100));
System.out.println(Foo.compare(100L, 100L));
System.out.println(Foo.compare(127L, 127L));
System.out.println(Foo.compare(128L, 128L));
System.out.println();
System.out.println(System.getProperty("java.vendor"));
System.out.println(System.getProperty("java.version"));
}
public boolean compare( T val1, T val2) {
return ( val1 == val2 ) ? true : false;
}
}
结果是:
false
true
true
false
Sun Microsystems Inc.
1.6.0_26
首先:
这很奇怪,因为我只声明了一个模板类“T”。第一个比较结果是假的,因为 val1 很长,而 val2 是 int(我已经通过调试器检查过)。但它不应该是,因为我只声明了一个模板类并且两者都相同。
和
其次:
为什么每个大于 127 的“长”大数字都不相等?
谢谢!