自動拆裝箱

2021-10-24 05:43:28 字數 1633 閱讀 6717

自動拆裝箱分為拆箱和裝箱。

拆箱:把包裝類轉換為對應的基本資料型別

裝箱: 把基本資料型別轉換為對應的包裝類

ps:基本資料型別對應的包裝類見

五、擴充套件

所有的包裝類都有多個相同方法,其中有乙個為valueof(); 這個方法就是將基本資料型別轉換為對應的包裝類。

同時有乙個類似的方法為???value(), 其中???代表八種基本資料型別; 這個方法就是將包裝類轉換為對應的基本資料型別。

1、集合

集合是不接受存放基本資料型別的,但在實際開發中,乙個integer的集合是可以直接add乙個int變數的。在這個過程就是自動裝箱。

listlist = new arraylist<>();

int i = 1;

list.add(i);

//這一步實際上是

list.add(integer.valueof(i));

2、比較

我們經常用包裝類與基本資料型別進行比較運算,得到乙個布林值,再進行不同的業務邏輯。這個過程是先將包裝類轉換為基本資料型別再進行比較。

integer a = 1;

system.out.println(a > 2 ? "a大":"a小");

//實際

system.out.println(a.intvalue(a) > 2 ? "a大":"a小");

3、運算

兩個包裝類進行四則運算時,會將包裝類轉換為基本資料型別再運算

integer a = 1;

integer b = 2;

system.out.println(a+b);

//實際過程

integer a = integer.valueof(1);

integer b = integer.valueof(2);

system.out.println(a.intvalue()+b.intvalue());

還有一些其它的應用,就不一一枚舉。
自動拆裝箱使用中也會有些問題需要注意

1、有些場景會進行自動拆裝箱,由於自動拆箱,如果包裝類物件為null,那麼自動拆箱時就有可能丟擲npe(空指標異常)。

2、如果乙個for迴圈中有大量拆裝箱操作,會浪費很多資源。

3、包裝類進行比較,在-128-127可以用==,這個範圍之外需要使用equals進行比較,在不確定範圍時,避免出現異常最好使用equals

基本資料型別對應的包裝類

int ---> integer

byte ---> byte

long ---> long

float ---> float

boolean ---> boolean

short ---> short

char ---> character

double ---> double

自動拆裝箱

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

自動拆 裝箱

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

自動拆裝箱

1.基本資料型別對應的包的好處是它是個類可以new物件調方法 2.基本資料型別包裝類的特點 用於基本資料型別和字串進行轉換 且每個方法都是自己包裝類的方法,因為返回值是static修飾的所以可以直接類名.呼叫 3.字串轉基本資料型別的時候 字串必須是數值型不然不能進行轉換 4.基本資料型別轉字元 1...