1. 程式人生 > >Java中什麼是自動裝箱,什麼是自動拆箱

Java中什麼是自動裝箱,什麼是自動拆箱

  一、自動裝箱 

    假設想定義一個整形陣列列表。而尖括號中的型別引數不允許是基本型別,也就是說,不允許寫成ArrayList<int>。這裡就用到了Integer物件包裝器類。我們可以宣告一個Integer物件的陣列列表。

ArrayList<Integer> list = new ArrayList<>();

    幸運的是,有一個很有用的特性,從而更加便於新增int型別的元素到ArrayList<Integer>中。下面這個呼叫

list.add(3);

    將自動換成

list.add(Integer.valueOf(3));

    這種變換就叫做自動裝箱(autoBoxing)。

二、自動拆箱

    相反的,當將一個Integer物件賦給一個int值的時候,將會自動拆箱。也就是說,編譯器將下列語句:

int n = list.get(i);

    翻譯成:

int n = list.get(i).intValue();

    甚至在算數表示式中也能夠自動的裝箱和自動的拆箱。例如,可以將自增操作應用於一個包裝器引用:

Integer n = 1000;
n++;

    編譯器將自動的插入一條物件拆箱的指令,然後進行自增計算,最後再將結果裝箱。