Java自動裝拆箱

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中方法重載和方法重寫的區別 下一篇:無