自动装箱问题

raj*_*raj 3 java autoboxing

可能重复:
包装类和==运算符

当我学习自动装箱时,在网站上看到这段代码.

Integer i1 = 1;  
Integer i2 = 1;  
// true 
System.out.println(i1 == i2);  


Integer i3 = -200;  
Integer i4 = -200;  
// false
System.out.println(i3 == i4);   
Run Code Online (Sandbox Code Playgroud)

我能理解为什么第二次比较会给出错误(比较参考文献).但为什么它会给第一个真实的呢?

Pét*_*rök 7

因为前几个Integer对象(从-128到127,包括,确切地说)是由JVM缓存和重用的,所以i1并且i2是对同一物理对象的引用.

这也是真实的Long,ShortByteBTW.有关更详细的说明,请参阅此文章.