Java 自动装箱 - 基本类型到包装器对象
在自动装箱中,Java编译器会自动将基本类型转换为它们对应的包装器类对象。例如,
int a = 56;
// autoboxing
Integer aObj = a;
自动装箱在处理Java集合时具有很大的优势。
示例 1: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 自动拆箱 - 包装器对象到基本类型
在自动拆箱中,Java编译器会自动将包装器类对象转换为它们对应的基本类型。例如,
// autoboxing
Integer aObj = 56;
// unboxing
int a = aObj;
与自动装箱一样,自动拆箱也可以与Java集合一起使用。
示例 2: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。