語法糖 自動拆裝箱的陷阱

2021-08-20 16:21:55 字數 657 閱讀 1696

integer a= 1;

integer b =2;

integer c= 3;

integer d = 3;

integer e = 321;

integer f = 321;

long g = 3l;

system.out.println(c==d);

system.out.println(e==f);

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

system.out.println(c.equals(a+b));

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

system.out.println(g.equals(a+b));

執行結果為:

true

false

true

true

true

false

前兩個是因為在自動裝箱時對於值從

-128到127之間的值

,它們被裝箱為integer物件後,會存在記憶體中被重用

中間兩個是因為包裝類的「==」運算在不遇到算數運算的情況下不會自動拆箱

後兩個是因為equals()方法不處理型別的轉換問題。

自動拆裝箱

目的 簡化 書寫,封裝類可以提供對基本型別的基本操作,當使用集合框架時需要放入的是物件,不能放入基本型別資料 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方法的呼叫,這就...