编译以下代码(使用 Java8) :
Integer i1 = 1000;
int i2 = 1000;
boolean compared = (i1 == i2);
但是它能做什么呢?
拆箱 i1:
boolean compared = (i1.intvalue() == i2);
或方格 i2:
boolean compared = (i1 == new Integer(i2));
那么它是比较两个 Integer对象(通过引用)还是两个 int变量通过值?
注意,对于某些数字,引用比较将产生正确的结果,因为 Integer 类在 -128到 127之间维护一个值的内部缓存(另请参阅 TheLostMind 的注释)。这就是我在示例中使用 1000的原因,也是我专门询问取消装箱/装箱而不是比较结果的原因。