裝箱和拆箱

2021-08-08 06:37:12 字數 1280 閱讀 9053

裝箱:把基本型別用它們相應的引用型別包裝起來,使其具有物件的性質。int包裝成integer、float包裝成float

拆箱:和裝箱相反,將引用型別的物件簡化成值型別的資料

基本資料型別的包裝類是引用型別,基本型別是值引用,所以包裝類是乙個物件

integer a = new integer(100);

integer b = 100;

system.out.println("m12 result " + (a == b));              // m12 result false

new integer(100) 是建立乙個物件,所以他的值是存在堆中,在棧中存的只是乙個物件位址。 

integer b = 100;這種賦值方式會自動呼叫integer的valueof()快取(如果值大於127不會快取)為基本型別,所以這個也就相當於 int b=100,

所以 b 的值是存在棧中,而==是值比較,所以輸出的結果是false。

包裝型別

基本資料型別

快取物件(基本資料型別值)

boolean

boolean

true,false(全部值)

byte

byte

-128~127(全部值)

short

short

-128~127

character

char

0~127

integer

int-128~127(預設為127)

long

long

-128~127

float

float

無快取值

double

double

無快取值

當包裝類宣告的資料大於127或者小於-128時。就會重新再new乙個新的包裝類物件,把多餘的資料存到新的包裝類物件中

float 和 double不管宣告的值是多少,都會return false,

public void m12() 

public static void test()

public void m11()

public void m12()

public void m21()

public void m22()

public void m31()

public void m32()

public void m41()

public void m42()

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

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

裝箱和拆箱

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

裝箱和拆箱

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