【发布时间】:2023-04-03 05:15:02
【问题描述】:
我读到“因此,当使用 Integer.valueOf 创建对象或直接将值分配给 -128 到 127 范围内的 Integer 时,将返回相同的对象。”
这就是原因:-
Integer a=100;
Integer b=100;
if(a==b) // return true as both the objects are equal
但为什么不在下面这种情况下呢? 这两个值也在 127 和 -128 的范围内,因此根据上面的语句,这两个值也会返回相同的对象。
但我得到的输出是“不是”
public static void main(String[] args) {
Integer a = 10;
Integer b = 12;
if(a == b)
System.out.println("same");
else
System.out.println("Not");
}
谁能解释一下?
【问题讨论】:
-
您误解了“同一个对象”。每个特定值都是同一个对象,而不是所有值的同一个对象。那是不可能的……你真的期望
a和b会引用同一个对象,即使值不同?该对象如何知道a与值 10 相关联,b与值 12 相关联?