Integer自动装箱超出赋值范围

@Integer自动装箱超出赋值范围

Integer自动装箱

Integer自动装箱超出赋值范围

输出结果

Integer自动装箱超出赋值范围

Integer源代码

Integer自动装箱超出赋值范围

Integer自动装箱超出赋值范围

结论

Integer自动装箱超出赋值范围
1、i1和i2的自动装箱在Integer的取值范围之内,符合if括号里面的条件,就
return IntegerCache.cache[i + (-IntegerCache.low)];
返回的都是cache数组里的对象。
所以 i1==i2 的输出为true。

Integer自动装箱超出赋值范围
2、i3和i4的取值为200,大于127,那么就不符合if 的条件,直接
return new Integer(i);
i3和i4就各自返回新的Integer对象,新的Integer对象值会不一样。
所以 i3==i4 的输出为true。