跳到主要内容

Java 自动装箱与拆箱

提示
  1. 自动装箱的定义:Java自动装箱是基本类型自动转换为相应的包装类对象的过程,如 int 转换为 Integer
  2. 自动装箱的应用:自动装箱在使用Java集合如 ArrayList 时特别有用,允许直接存储基本类型值。
  3. 自动拆箱的概念:Java自动拆箱是包装类对象自动转换回相应基本类型的过程,例如 Integer 转换为 int

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

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

int a = 56;

// 自动装箱
Integer aObj = a;

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

示例 1: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 类型的数组列表。因此,该数组列表只能容纳 Integer 类型的对象。

注意这一行,

list.add(5);

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

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

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

// 自动装箱
Integer aObj = 56;

// 拆箱
int a = aObj;

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

示例 2: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

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

int a = list.get(0);

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