Skip to content

Java自动装箱和拆箱

在Java中,自动装箱是指编译器自动将基本类型转换为其对应的包装类对象。例如,

java
int a = 56;

// 自动装箱
Integer aObj = a;

在使用Java集合时,自动装箱有很大的优势。


示例1:Java自动装箱

java
import java.util.ArrayList;

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]

在上面的示例中,我们创建了一个整数类型的数组列表。因此,该数组列表只能存储Integer类型的对象。

注意以下代码行:

java
list.add(5);

在这里,我们传递的是基本类型值。然而,由于自动装箱,基本值会自动转换为Integer对象,并存储在数组列表中。


Java拆箱 - 包装类对象到基本类型

在Java中,拆箱是指编译器自动将包装类对象转换为其对应的基本类型。例如,

java
// 自动装箱
Integer aObj = 56;

// 拆箱
int a = aObj;

与自动装箱类似,拆箱也可以用于Java集合。


示例2:Java拆箱

java
import java.util.ArrayList;

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("索引0的值:" + a);
   }
}

输出

ArrayList: [5, 6]
索引0的值:5

在上面的示例中,注意以下代码行:

java
int a = list.get(0);

这里,get()方法返回索引为0的对象。然而,由于拆箱,该对象会自动转换为基本类型int,并赋值给变量a。