Integer自動拆裝箱

2021-08-03 18:23:52 字數 1195 閱讀 2930

integer a = new integer(3);

int b = 3;

integer c = new integer(3);

// 輸出 true		

system.out.println("a = b ? " + (a == b));

// 輸出 false

system.out.println("a = c ? " + (a == c));

雖然包裝型別的變數是引用資料型別,但包裝類的例項可以與數值型別的值進行比較,這種比較是直接取出包裝類例項所包裝的數值來進行比較的。而兩個包裝類的例項進行比較時則必須是只有兩個包裝類引用指向同乙個物件時才會返回true。

// 通過自動裝箱,允許把基本型別值賦予給包裝類例項

integer a = 3;

integer b = 3;

// 輸出 true

system.out.println(a == b);

integer a2 = 128;

integer b2 = 128;

// 輸出 false

system.out.println(a2 == b2);

通過檢視integer類的源**,可以發現系統把乙個-128~127之間的整數自動裝箱成integer例項,並放入了乙個名為cache的陣列中快取起來。因此當自動裝箱-128~127之間的整數時當獲得指向相同物件的引用。

private static class integercache  catch( numberformatexception nfe) 

}high = h;

cache = new integer[(high - low) + 1];

int j = low;

for(int k = 0; k < cache.length; k++)

cache[k] = new integer(j++);

// range [-128, 127] must be interned (jls7 5.1.7)

assert integercache.high >= 127;

}private integercache() {}

}

剛開始寫部落格,不足之處望各位指教。

自動拆裝箱

目的 簡化 書寫,封裝類可以提供對基本型別的基本操作,當使用集合框架時需要放入的是物件,不能放入基本型別資料 1.自動裝箱 integer i 3 實際會轉換為integer.valueof 3 2.自動拆箱 int j i 實際會轉換為 i.intvalue 3.自動拆裝箱易混 integer a...

自動拆裝箱

自動拆裝箱分為拆箱和裝箱。拆箱 把包裝類轉換為對應的基本資料型別 裝箱 把基本資料型別轉換為對應的包裝類 ps 基本資料型別對應的包裝類見 五 擴充套件所有的包裝類都有多個相同方法,其中有乙個為valueof 這個方法就是將基本資料型別轉換為對應的包裝類。同時有乙個類似的方法為?value 其中?代...

自動拆 裝箱

自動裝箱 如果乙個int型常量被傳遞到需要乙個integer物件的地方,那麼編譯器將在幕後插入乙個對integer構造方法的呼叫,這就叫做自動裝箱 1 integer i 12 自動拆箱 如果乙個integer物件被放到需要int型量的地方,則編譯器將在幕後插入乙個對intvalue方法的呼叫,這就...