Interger拆箱和封箱

2021-10-06 11:53:48 字數 1770 閱讀 7681

自動裝包:基本型別自動轉為包裝型別.(int  >> integer)

自動拆包:包裝型別自動轉為基本型別.(integer >>  int)

裝箱原始碼邏輯(-128-127返回 interger cache中的值)

public static integer valueof(int i)
demo

/**

* interger的裝箱和拆箱 (自動和手動)

*/int i1 =

500;

integer integer1 =

newinteger

(i1)

;// 手動裝箱

int i2 = integer1.

intvalue()

;// 手動拆箱

int i3 =

500;

integer integer2 = i3;

// 自動裝箱

int i4 = integer2;

// 自動拆箱

原始碼剖析

interger integer = new integer(100)直接在堆記憶體開闢空間儲存

integer i = 10自動裝箱實際執行integer.valueof(i)

public

final

class

integer

extends

number

implements

comparable

. *

* @serial

*/private

final

int value;

public

integer

(int value)

public

intintvalue()

public

long

lon**alue()

public

static integer valueof

(int i)

private

static

class

integercache

catch

( numberformatexception nfe)

} high = h;

cache =

newinteger

[(high - low)+1

];int j = low;

for(

int k =

0; k < cache.length; k++

) cache[k]

=new

integer

(j++);

// range [-128, 127] must be interned (jls7 5.1.7)

assert integercache.high >=

127;

}private

integercache()

}public

boolean

equals

(object obj)

return

false;}

//......

}

封箱和拆箱

1 封箱 是把值型別轉換為system.object型別 引用型別 或者轉換為值型別實現的介面型別。注 引用型別和值型別見 2 2 拆箱 是將引用型別轉換為值型別。經典 int i 5 object obj i 封箱 int j int obj 拆箱 1 值型別 值型別在記憶體的同乙個地方儲存它們自...

自動封箱和拆箱

integer 中 public static integer valueof int i 如果沒有設定integercache.high的值,預設為127,也就是說值在 128 127之間,返回的都是同乙個物件。integerf1 100,f2 100,f3 150,f4 150 system.o...

c 經典入門學習筆記 封箱和拆箱

封箱和拆箱,這個概念在以前的程式語言的學習中,從未聽到過,現在先說一下封箱的概念是把值型別轉換為object型別,或者轉換為由值型別實現的介面型別。在這裡有個值型別是個什麼概念呢?我是這樣理解的,所謂值型別就是指像int string之類的簡單型別,像集合 陣列應該就不是值型別還應該歸為物件型別。下...