public class Test {
public static void main(String[] args) {
Integer i = 3675;
Integer j = 3675;
System.out.println(i == j);
System.out.println(Integer.valueOf(i) == Integer.valueOf(j));
System.out.println(i.intValue() == j.intValue());
}
}
打印结果:
false
false
true
原因:
public static Integer valueOf(int i) {
if (i >= IntegerCache.low && i <= IntegerCache.high)
return IntegerCache.cache[i + (-IntegerCache.low)];
return new Integer(i);
}
cache 范围:[-128, 127],超过范围用 intValue()比较值相等