說明:對於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