1. 程式人生 > >Integer比較值大小==,大於等於128的返回false

Integer比較值大小==,大於等於128的返回false

code:

Integer a1 = 127;
Integer b1 = 127;
if(a1==b1){
    System.out.println("相等");
}else{
    System.out.println("不等");
}

Integer a = 128;
Integer b = 128;
if(a==b){
    System.out.println("相等");
}else{
    System.out.println("不等");
}

//結果:
//相等
//不等

分析:

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