Java 自动装箱和拆箱

Java 自动装箱和拆箱能将数据从原始类型和包装类型之间自动转换。在本教程中,我们将借助示例了解 Java 自动装箱和拆箱。

Java 自动装箱和拆箱能将数据从原始类型和包装类型之间自动转换。在本教程中,我们将借助示例了解 Java 自动装箱和拆箱。

Java 自动装箱

Java 编译器自动将原始类型转换为它们相应的包装类对象,这个过程称为 自动装箱。例如,

int a = 56;

// 自动装箱
Integer aObj = a;

自动装箱在处理 Java 集合时很有用。

示例 1:Java 自动装箱

import java.util.ArrayList;

public class Main {
  public static void main(String[] args) {

    ArrayList<Integer> list = new ArrayList<>();

    // 自动装箱
    list.add(5);
    list.add(6);

    System.out.println("ArrayList: " + list);
  }
}

输出

ArrayList: [5, 6]

在上面的例子中,我们创建了一个整数类型的 ArrayList,ArrayList 中只能保存 Integer 类型的对象。

注意这行语句,

list.add(5);

在这里,我们传递的值是原始类型。但是自动装箱会自动将原始类型的值转换为 Integer 对象并存储在数组列表中。

Java 拆箱

Java 编译器能自动将包装类对象转换为其相应的原始类型,这个过程称为 拆箱。例如,

// 自动装箱
Integer aObj = 56;

// 拆箱
int a = aObj;

自动装箱一样,拆箱也可以用于 Java 集合。

示例 2:Java 拆箱

import java.util.ArrayList;

public class Main {
  public static void main(String[] args) {

    ArrayList<Integer> list = new ArrayList<>();

    // 自动装箱
    list.add(5);
    list.add(6);

    System.out.println("ArrayList: " + list);

    // 拆箱
    int a = list.get(0);
    System.out.println("Value at index 0: " + a);
  }
}

输出

ArrayList: [5, 6]
Value at index 0: 5

在上面的例子中,注意这一行,

int a = list.get(0);

在这里, get() 方法返回索引 0 处的 Integer 对象, 但是拆箱会自动将包装类型转换为原始类型 int