自動裝包:基本型別自動轉為包裝型別.(int >> integer)裝箱原始碼邏輯(-128-127返回 interger cache中的值)自動拆包:包裝型別自動轉為基本型別.(integer >> int)
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之類的簡單型別,像集合 陣列應該就不是值型別還應該歸為物件型別。下...