public static Integer valueOf(int i) {
if (i >= IntegerCache.low && i <= IntegerCache.high)
return IntegerCache.cache[i + (-IntegerCache.low)];
return new Integer(i);
}
在Integer的源码中有如上代码。这就导致,
在i >= IntegerCache.low && i <= IntegerCache.high
的范围内。他们会包装在同一个对象中
如例子:
在java基础中,在-128到127之间。
Integer i=new Intrger(125)
integer a=new Integer (125);
i==a;就是true;
所以使用“==”是可以显示true的。但是超过了就会另开一个Integer对象放进去。就只能使用equals判断了。使用“==”一定会报错;
Integer i=new Intrger(129)
integer a=new Integer (129);
i==a;就是false;