程序中用到两个Integer进行比较(a==b),发现有时正确有时错误,给整懵逼了。上网查了一下,发现原因如下:
在-128<=i<=127的时候是直接用的int原始数据类型,而超出了这个范围则是new了一个对象。
public static Integer valueOf(int i) {
if(i >= -128 && i <= IntegerCache.high)
return IntegerCache.cache[i + 128];
else
return new Integer(i);
}