本文转自测试人社区,原文链接:https://ceshiren.com/t/topic/24130/6
基本数据(Primitive)类型的自动装箱(autoboxing)、拆箱(unboxing)是自J2SE 5.0开始提供的功能。Java语言规范中说道:在许多情况下包装与解包装是由编译器自行完成的(在这种情况下包装称为装箱,解包装称为拆箱)。
通俗的理解:装箱:基本类型转换成封装类型, 拆箱:封装类型转换成基本类型 这么一个过程。
下面以Integer与int之间的转换作为理解,以Java语言为例:
装箱(Autoboxing)
Integer a = 2; //Boxing
简单的理解:将2装在一个箱子里,这个箱子的类型是Integer 。箱子这里面装的数值就是2,我们就完成了一次装箱操作。并把a指向2这个箱子。
Integer b = new Integer(2);//Boxing
显示装箱。生成一个新的箱子 new Integer(); 并且这个箱子的值为2.而且让b指向这个箱子。
拆箱(Unboxing)
故名思议就是将对象重新转化为基本数据类型
int v = a.intValue(); //Unboxing
简单的理解:将里面int的值取出来。拆箱有个很典型的用法就是在进行运算的时候:因为对象时不能直接进行运算的,而是要转化为基本数据类型后才能进行加减乘除。
例如:
Integer c = 5;
System.out.print(c--);//进行计算时隐含的有自动拆箱