裝箱和拆箱

2021-10-23 09:16:32 字數 833 閱讀 7303

1.裝箱:值型別轉換為引用型別(基本資料型別轉換為包裝器型別)

自動裝箱:

integer total=99;

裝箱的時候自動呼叫的是integer的valueof(int)方法

2.拆箱:引用型別轉換為值型別(包裝器型別轉換為基本資料型別)

自動拆箱:

int totalprim=total;

拆箱的時候自動呼叫的是integer的intvalue方法

總結:裝箱的過程會建立對應的物件,這個會消耗記憶體,所以裝箱的過程會增加記憶體的消耗,影響效能

總結實現過程:裝箱過程是通過呼叫包裝器的valueof方法實現的,而拆箱過程是通過呼叫包裝器的***value方法實現的(***代表對應的基本資料型別)

總結:integer、short、byte、character、long這幾個類的valueof方法的實現是類似的

double、float的valueof方法的實現是類似的

integer i=new integer(***); 不會觸發自動裝箱的過程

integer i=***; 會觸發自動裝箱的

注意:當「==」運算子的兩個運算元都是包裝器型別的引用,則是比較指向的是否是同乙個物件,而如果其中有乙個運算元是表示式(即包含算術運算)則比較的是數值(則會觸發自動拆箱的過程)。對於包裝器型別,equals方法並不會進行型別轉換

值型別轉到引用型別…要先建立乙個引用物件,才能把棧中的資料拷貝到託管堆中…

引用型別轉到值型別…不銷毀引用物件,直到物件生命週期結束才由gc**…

裝箱和拆箱,自動裝箱和自動拆箱

以integer的建立為例。裝箱 把基本資料型別轉換成包裝類物件 int integer integer num1 new integer 17 拆箱 把乙個包裝類的物件,轉換成基本型別的變數 integer int int num2 num1.intvalue 自動裝箱 integer num3 ...

裝箱和拆箱

在c 中的有兩種型別的變數 值型別和引用型別。當值型別和引用型別相互轉化時,會發生裝箱和拆箱的過程。這裡有一點要宣告 經過拆箱或裝箱的物件會多出它自己乙份拷貝,如圖所示 從圖可以看出它和它的拷貝不在乙個儲存區域。這也是值型別和引用型別的區別所在。值型別總是在棧中,而引用型別總是在託管堆中。目前j2s...

裝箱和拆箱

裝箱 boxing 和拆箱 unboxing 是c 型別系統中重要的概念。它通過允許任何數值型別的資料被轉換為任何形式型別的物件提供了數值型別和引用型別間的緊密聯絡。裝箱和拆箱使得對在其中任何型別都可以最終被看作物件的型別系統的統一的觀察變為可能。裝箱轉換允許任何數值型別可以隱式地轉換為 objec...