gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 13:37:40 25 4
gpt4 key购买 nike

我正在阅读 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() 方法一样进行比较。即使整数变量设置为相同的值(即 10),使用 == 总是给我“假”。我对么?使用 == 比较相同的 Integer 对象(具有相同的值)将始终导致“false”

最佳答案

答案的关键称为对象驻留。 Java interns 小数字(小于 128),因此 interned 范围内具有 n 的所有 Integer(n) 实例都是相同的。大于或等于 128 的数字不会被保留,因此 Integer(1000) 对象彼此不相等。

关于java - 在Java中使用==运算符来比较包装对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31547133/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com