考虑这段代码:
class test {
public static void main(String[] args) {
test inst_test = new test();
int i1 = 2000;
int i2 = 2000;
int i3 = 2;
int i4 = 2;
Integer Ithree = new Integer(2); // 1
Integer Ifour = new Integer(2); // 2
System.out.println( Ithree == Ifour );
inst_test.method( i3 , i4 );
inst_test.method( i1 , i2 );
}
public void method( Integer i , Integer eye ) {
System.out.println(i == eye );
}
}
它打印:
false
true
false
我理解第一个false
, == 运算符只检查两个引用是否在同一个对象上工作,在这种情况下不是。
以下内容让我摸不着头脑true
。false
为什么Java会考虑和i3
平等i4
但又不同?两者都被包装成整数,不应该都评估为假吗?这种不一致是否有实际原因?i1
i2