0%

java box/unbox

介紹

java 對基本的型態和對應的物件的自動轉換是編譯時完成的。
讓我們來簡單是如何做到的。

這樣的轉換叫裝箱及拆封 (box/unbox)。

比如將int的變量轉換成Integer對象,這個過程叫做裝箱,
反之將Integer對象轉換成int類型值,這個過程叫做拆箱。

自動裝箱

看代碼吧

1
2
3
4
public static void main(String[] args) {
int i = 10;
Integer n = i;
}

反組譯後是下面的程式。

1
2
3
4
5
public static void main(String args[])
{
int i = 10;
Integer n = Integer.valueOf(i);
}

自動拆封

看下面的代碼

1
2
3
4
5
public static void main(String[] args) {

Integer i = 10;
int n = i;
}

反組譯後

1
2
3
4
5
public static void main(String args[])
{
Integer i = Integer.valueOf(10);
int n = i.intValue();
}

結論

所以,裝箱過程是通過調用包裝器的valueOf方法實現的,
而拆箱過程是通過調用包裝器的 xxxValue方法實現的。

Java 對語法中加入了方便的用法,讓開發人員更方便使用 java。