1. 程式人生 > >java Integer 超過127時,比較判斷

java Integer 超過127時,比較判斷

public class TestInteger {
public static void main(String[] args) {
Integer s1 = 127, s2 = 127, t1 = 128, t2 = 128;
System.out.println(s1 == s2);
System.out.println(s1.equals(s2));
System.out.println(t1 == t2);
System.out.println(t1.equals(t2));
System.out.println(t1.intValue() == t2.intValue());
}

}

比較答案:

true
true
false
true
true

引用回答

JVM會自動維護八種基本型別的常量池,int常量池中初始化
-128~127的範圍,所以當為Integer i=127時,在自動裝箱過程中是取自常量池中的數值,而當Integer i=128時,128不在常量池範圍內,所以在自動裝箱過程中需new 128,所以地址不一樣。