我发现 Integer 对象有以下 == 行为,但我无法理解。(我很清楚应该使用 equals 进行此类比较,但我正在为 OCPJP 学习......)
简而言之,== 对 1000 的预期效果,但对 10 无效。
之前的代码片段是:
Integer i1 = 1000;
Integer i2 = 1000;
if(i1 != i2) System.out.println("different objects");
if(i1.equals(i2)) System.out.println("meaningfully equal");
它的行为与预期的一样:
different objects
meaningfully equal
后者虽然:
Integer i3 = 10;
Integer i4 = 10;
if(i3 == i4) System.out.println("same object");
if(i3.equals(i4)) System.out.println("meaningfully equal");
具有以下输出:
same object
meaningfully equal
有人可以解释为什么会这样吗?