编译以下代码(使用 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
的原因,也是我专门询问取消装箱/装箱而不是比较结果的原因。