基本資料型別的自動裝箱(autoboxing)、拆箱(unboxing)是自j2se 5.0開始提供的功能。
一般我們要建立乙個類的物件的時候,我們會這樣:
class a = new class(parameter);
裝箱:當我們建立乙個integer物件時,卻可以這樣:
integer i = 100; (注意:不是 int i = 100; )
integer i = 100實際上是 integer i = integer.valueof(100);此即基本資料型別的自動裝箱功能。
ps:當 integer i = xx xx不在valueof的範圍(-128~127)內時,integer i = xx歸根結底就是integer i = new integer(xx)
拆箱:integer i = new integer(333);
int j = i;//自動取出其值
invalueof原始碼如下:
public static integer valueof(int i)
return new integer(i);
}當方法的引數小於等於127和大約等於-128時,會始終只在記憶體中存在乙個相同數值的物件,
integer i = 100;
integer j = 100;
i和j指會向同乙個物件。
不明白的可以再去看看integer中的私有類integercache,第一次初始化的時候它就會造出來256個物件。
裝箱和拆箱的例子,從基本型別對應的類到object的轉換,也是裝箱和拆箱的乙個用法:
class fu
class zi extends fu
public class test
public static void m31(object i)
public static void zhuangxiangtest(fu x)
}另外:
string str = "a"也是裝箱,應該相當於string str = "a".intern();
intern是乙個本地方法,它會去記憶體中檢查是否有這個常量。
Java 裝箱 拆箱
1.裝箱過程是通過呼叫包裝器的valueof方法實現的,而拆箱過程是通過呼叫包裝器的 value方法實現的。代表對應的基本資料型別 2.通過valueof方法建立integer物件的時候,如果數值在 128,127 之間,便返回指向integercache.cache中已經存在的物件的引用 否則建立...
java裝箱拆箱
裝箱 將基本型別轉換為包裝類。integer i1 10 自動裝箱 valueof 方法,裝箱 顯式裝箱 integer i2 integer 10 顯式裝箱 integer i3 new integer 10 i3放在棧上,new integer 10 放在堆上。i3儲存的是new integer...
java拆箱,裝箱
拆箱,裝箱 將乙個char型別的引數傳遞給需要乙個character型別引數時,那麼編譯器會自動地將char型別引數轉換為character物件。這種特徵稱為裝箱,反過來稱為拆箱。使用character的構造方法建立乙個character類物件,例如 character ch new charact...