裝箱和拆箱

2021-09-22 10:22:16 字數 769 閱讀 4049

通過裝箱和拆箱實現值型別和引用型別資料的相互轉換

1.裝箱轉換:

裝箱轉換是指將乙個值型別的資料隱式地轉換為乙個物件型別的資料。

過程 :建立乙個object型別的例項

把值型別的值複製給這個object型別。

例如下面的語句執行了裝箱轉換:

int i = 10 ;

object obj = i;//裝箱

在上面的語句中,第一條語句定義了乙個整型變數i並對其賦值

第二條語句建立乙個object型別的例項,並把該值型別的值複製給這個obj。

在執行裝箱轉換時,也可以使用顯式轉換。例如

int i = 10;

object obj = (object)i;//裝箱

變數i及其值10在棧空間中分配,obj時引用型別變數在棧空間中分配。當i裝箱後變為引用型別資料,在堆空間中分配相應的空間,obj中包含其位址。

2拆箱轉換

拆箱轉換是指將乙個引用型別的資料轉換成乙個值型別資料。

過程:首先檢查物件例項,確保是給定值型別的乙個的裝箱值。

然後把例項的值複製到值型別資料中。

object obj = 10;

int i = (int)obj ;//拆箱

拆箱過程必須顯式轉換。

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

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

裝箱和拆箱

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

裝箱和拆箱

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