自动装箱与自动拆箱
自动装箱就是Java自动将基础数据类型的值转换成对应的对象,比如将int的变量转换成Integer对象,这个过程叫做装箱。反之将Integer对象转换成int类型值,这个过程叫做拆箱。因为这里的装箱和拆箱是自动进行的,而非人为转换,所以就称作为自动装箱和拆箱。
简单一点来说,装箱就是自动将基本数据类型转换为包装器类型。拆箱就是自动将包装器类型转换为基本数据类型。如下是一些需要装箱拆箱的类型:
案例说明
1 | public class Main { |
备注:当执行Integer total = 99
这句代码时,其实JVM为我们执行了Integer total = Integer.valueOf(99)
。当执行int totalprim = total
这句代码时,其实JVM为我们执行了int totalprim = total.intValue()
。
自动装箱/拆箱的原理
从字节码中,我们发现装箱其实就是调用了包装类的valueOf()
方法,而拆箱其实就是调用了xxxValue()
方法。需要注意的是,如果频繁拆装箱的话,也会严重影响系统的性能,我们应该尽量避免不必要的拆/装箱操作。