小编典典

在Java中使用==运算符比较包装对象

java

我正在阅读Kathy Sierra和Bert Bates编写的SCJP Java 6,这本书让我非常困惑。在第245页上,他们声明以下代码。

Integer i1 = 1000;
Integer i2 = 1000;
if(i1 != i2)
System.out.println("different objects");

//Prints output
different objects

然后在下一页上,它们具有以下代码

Integer i3 = 10;
Integer i4 = 10;
if(i3 == i4)
System.out.println("same objects");

//Prints output
same objects

我很困惑!当我自己尝试该方法时,似乎无法使用==来比较使用equals()方法的方式。即使Integer变量设置为相同的值(即10),使用==总是给我’false’。我对么?使用==比较相同的Integer对象(具有相同的值)将始终导致’false’


阅读 452

收藏
2020-03-19

共1个答案

小编典典

答案的关键是对象实习。Java会实习小的数字(少于128个),因此in范围内所有Integer(n)with的实例n都是相同的。大于或等于128的数字不会被插入,因此Integer(1000)对象彼此不相等。

2020-03-19