JAVA-基礎型別-遇到問題總結
阿新 • • 發佈:2018-11-15
Integer 與 int 型別 區別
Integer 類在JDK1.0的時候就有了,它是一個類,是 int 基本資料型別的封裝類
1、Integer是int的包裝類,int則是java的一種基本資料型別
2、Integer變數必須例項化後才能使用,而int變數不需要
3、Integer實際是物件的引用,當new一個Integer時,實際上是生成一個指標指向此物件;而int則是直接儲存資料值
4、Integer的預設值是null,int的預設值是0
原始碼:
public static Integer valueOf(int i){ assert IntegerCache.high >= 127; if (i >= IntegerCache.low && i <= IntegerCache.high){ return IntegerCache.cache[i + (-IntegerCache.low)]; } return new Integer(i); }
分析原始碼我們可以知道在 i >= -128 並且 i <= 127 的時候,第一次宣告會將 i 的值放入快取中,第二次直接取快取裡面的資料,而不是重新建立一個Ingeter 物件。那麼第一個列印結果因為 i = 10 在快取表示範圍內,所以(比較的是地址,地址一樣)為 true。
(因為new生成的是兩個物件,其記憶體地址不同)。
詳細比較: https://blog.csdn.net/teacher_lee_zzsxt/article/details/79230501
所以比較值是否一樣,用 equleas