包裝類面試題
Integer i1 = 127;
Integer i2 = 127;
System.out.println(i1==i2); //true
Integer i3 = -129;
Integer i4 = -129;
System.out.println(i3==i4); //false
解析:
自動裝箱時,如果數據介於 -128 ~ 127中間 == 比較的結果為true 反之為false
自動裝箱原理:
自動幫我們使用Integer.valueOf()
if(i >= -128 && i <= 127){
return IntegerCache.cache[i+(-IntegerCache.low)];
}
return new Integer(i);
如果裝箱數據不在 -128 ~ 127中間,會重新創建新對象
IntegerCache是一個數組
只要在範圍內,都是從這個屬組內取出來的
所以地址必定相同
在Integer類中存在一個長度為256的數組
數組中存了256個Integer對象,分別是 -128~0~127
需注意:
== 是比地址
要比內容還是用equals