说明:对于Integer var = ? 在-128至127范围内的赋值,Integer对象是在 IntegerCache.cache产生,会复用已有对象,这个区间内的Integer值可以直接使用==进行判断,但是这个区间之外的所有数据,都会在堆上产生,并不会复用已有对象,这是一个大坑,推荐使用equals方法进行判断。
public class TestIntegerIndex {
public static void main(String[] args) {
Integer var1 = 1;
Integer var2 = 1;
System.out.println(var1 == var2);
Integer var3 = 128;
Integer var4 = 128;
System.out.println(var3 == var4);
System.out.println(var3.equals(var4));
}
}
true
false
true