1. 程式人生 > >JAVA-基礎型別-遇到問題總結

JAVA-基礎型別-遇到問題總結

 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