自動拆裝箱

2021-09-26 07:18:48 字數 1861 閱讀 6170

目的:簡化**書寫,封裝類可以提供對基本型別的基本操作,當使用集合框架時需要放入的是物件,不能放入基本型別資料

1.自動裝箱:

integer i=3; 實際會轉換為integer.valueof(3);

2.自動拆箱:

int j=i; 實際會轉換為 i.intvalue()

3.自動拆裝箱易混**:

integer a=1;

integer b=2;

integer c=3;

long d=

3l;//true,ab都會進行intvalue()

system.out.

println

(c==

(a+b));

//true,ab先進行intvalue(),再將計算後的值進行integer.valueof(),最後在進行equals()

system.out.

println

(c.equals

(a+b));

//true ab先進行intvalue(),再將計算後的值進強轉為long

system.out.

println

(d==

(a+b));

//false ab先進行intvalue(),再將計算後的值進行integer.valueof(),最後在進行equals()

system.out.

println

(d.equals

(a+b)

);

4.包裝類快取機制:

目的:提高效能,節約記憶體空間

通過提供乙個快取陣列,數值在規定範圍的包裝類物件直接返回其在快取陣列的引用。

快取範圍:

integer自動裝箱池的範圍是-128~127

byte,short,long範圍是-128~127

character範圍是0~127

float,double,boolean沒有快取

integer類的特殊性:

integer快取池的上界可以指定,而且包裝類不行。

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()

}

private

static

class

longcache

static

final long cache=

newlong[-

(-128)

+127+1

];static

}

自動拆裝箱

自動拆裝箱分為拆箱和裝箱。拆箱 把包裝類轉換為對應的基本資料型別 裝箱 把基本資料型別轉換為對應的包裝類 ps 基本資料型別對應的包裝類見 五 擴充套件所有的包裝類都有多個相同方法,其中有乙個為valueof 這個方法就是將基本資料型別轉換為對應的包裝類。同時有乙個類似的方法為?value 其中?代...

自動拆 裝箱

自動裝箱 如果乙個int型常量被傳遞到需要乙個integer物件的地方,那麼編譯器將在幕後插入乙個對integer構造方法的呼叫,這就叫做自動裝箱 1 integer i 12 自動拆箱 如果乙個integer物件被放到需要int型量的地方,則編譯器將在幕後插入乙個對intvalue方法的呼叫,這就...

自動拆裝箱

1.基本資料型別對應的包的好處是它是個類可以new物件調方法 2.基本資料型別包裝類的特點 用於基本資料型別和字串進行轉換 且每個方法都是自己包裝類的方法,因為返回值是static修飾的所以可以直接類名.呼叫 3.字串轉基本資料型別的時候 字串必須是數值型不然不能進行轉換 4.基本資料型別轉字元 1...