JAVA中装箱与拆箱

自动装箱与自动拆箱

自动装箱就是Java自动将基础数据类型的值转换成对应的对象,比如将int的变量转换成Integer对象,这个过程叫做装箱。反之将Integer对象转换成int类型值,这个过程叫做拆箱。因为这里的装箱和拆箱是自动进行的,而非人为转换,所以就称作为自动装箱和拆箱。

简单一点来说,装箱就是自动将基本数据类型转换为包装器类型。拆箱就是自动将包装器类型转换为基本数据类型。如下是一些需要装箱拆箱的类型:

案例说明

1
2
3
4
5
6
7
public class Main {
public static void main(String[] args) {
// 自动装箱
Integer total = 99;
// 自定拆箱
int totalprim = total;
}

备注:当执行Integer total = 99这句代码时,其实JVM为我们执行了Integer total = Integer.valueOf(99)。当执行int totalprim = total这句代码时,其实JVM为我们执行了int totalprim = total.intValue()

自动装箱/拆箱的原理

从字节码中,我们发现装箱其实就是调用了包装类的valueOf()方法,而拆箱其实就是调用了xxxValue()方法。需要注意的是,如果频繁拆装箱的话,也会严重影响系统的性能,我们应该尽量避免不必要的拆/装箱操作。