整数i1 = 1000; 整数i2 = 1000;
if(i1 == i2)返回false。究竟是怎么回事这里检查这个条件的呢?
如果条件为真,如果i在i1和i2中分配的值小于128,则为。如何在这里创建对象,它是所有值的comman还是不同的? 有人可以澄清这种情况。
答案 0 :(得分:3)
如果我在i1和i2中分配小于128,如果条件为真
是的,因为对于该范围,Java使用flyweight模式并缓存Integer
个对象,因此您获得了缓存版本的支持,==
工作了
这是可能的,因为Integer
对象是不可变的,并且缓存仅适用于范围[-128,127]