1

可能重复:
!= 和 == 运算符如何处理 Java 中的整数?

整数 i1 = 1000;整数 i2 = 1000;

if(i1 == i2) 返回 false。究竟发生了什么,它是如何在这里检查这种情况的?

如果条件为真,如果我在 i1 和 i2 中分配的值都小于 128。对象是如何在这里创建的,它是所有值的共同点还是不同的?有人可以澄清这种情况。

4

1 回答 1

3

如果我在 i1 和 i2 中分配小于 128 如果条件为真

是的,发生这种情况是因为对于该范围,Java 使用享元模式并缓存Integer对象,因此您获得缓存版本的支持并且==可以工作
这是可能的,因为Integer对象是不可变的,并且缓存仅适用于该范围[-128,127]

于 2012-12-18T11:30:27.170 回答