原文: https://www.programiz.com/java-programming/autoboxing-unboxing
在自动装箱中,Java 编译器自动将原始类型转换为它们对应的包装器类对象。 例如,
int a = 56;
// autoboxing
Integer aObj = a; 自动装箱在使用 Java 集合时具有很大的优势。
import java.util.ArrayList;
class Main {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>();
//autoboxing
list.add(5);
list.add(6);
System.out.println("ArrayList: " + list);
}
} 输出
ArrayList: [5, 6] 在上面的示例中,我们创建了一个Integer类型的ArrayList。 因此,ArrayList只能容纳Integer类型的对象。
注意这一行,
list.add(5); 在这里,我们传递原始类型值。 但是,由于自动装箱,原始值会自动转换为Integer对象并存储在ArrayList中。
在拆箱中,Java 编译器会自动将包装器类对象转换为其相应的原始类型。 例如,
// autoboxing
Integer aObj = 56;
// unboxing
int a = aObj; 像自动装箱一样,拆箱也可以与 Java 集合一起使用。
import java.util.ArrayList;
class Main {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>();
//autoboxing
list.add(5);
list.add(6);
System.out.println("ArrayList: " + list);
// unboxing
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的对象。 但是,由于取消装箱,该对象会自动转换为原始类型int并分配给变量a。