Java 1.5中引入了自動裝拆箱。自動裝箱和拆箱是將原始數據類型自動轉換為相應的java包裝類的便捷方式,反之亦然。
1. Java自動裝箱
將原始數據類型轉換為相應包裝類的對象稱為自動裝箱。例如,將int
轉換為Integer
或將long
轉換為Long
對象。
當原始值為下麵情況時,Java編譯器自動裝箱:
- 作為參數傳遞給期望相應包裝類的對象的方法。例如,一個帶有
Integer
參數的方法可以通過傳遞int
來調用,java編譯器會將int
轉換為Integer
對象。 - 分配給相應包裝類的變數。例如,將
Long
對象分配給long
變數。
2. Java拆箱
將包裝類型的對象轉換為對應的基本數據類型稱為拆箱。當包裝類的對象是以下情況時,Java編譯器應用拆箱:
- 作為參數傳遞給期望相應基元類型的值的方法。
- 分配給相應基元類型的變數。
3. Java 自動裝箱拆箱示例
下麵是一個java程式示例,演示了java中如何自動裝箱和拆箱的例子。
import java.util.ArrayList;
import java.util.List;
public class AutoboxingUnboxing {
public static void main(String[] args) {
int i = 5;
long j = 105L;
// 傳遞int類型值,將在運行時使用java中的自動裝箱轉換為Integer對象
doSomething(i);
List<Long> list = new ArrayList<>();
// java自動裝箱在集合類中添加原始類型
list.add(j);
}
private static void doSomething(Integer in) {
// 在java中拆箱,在運行時隱式調用Integer.intValue()以返回int類型值
int j = in;
// java 拆箱,將 int 轉為 Integer
doPrimitive(in);
}
private static void doPrimitive(int i) {
System.out.println("doPrimitive i = "+i);
}
}
注意:始終依賴自動裝箱並不是一個好編程方式,有時它會導致編譯器錯誤,即方法重載時方法不明確。如下面示例是有問題的 -
關於java中的自動裝箱和拆箱知識點就講解到這裏。此功能在減少代碼大小方面非常有用,因為不必顯式地將原始類型轉換為對象。
上一篇:
java中方法重載和方法重寫的區別
下一篇:無