自动装箱拆箱要点:
- 自动装箱时编译器调用valueOf将原始类型值转换成对象,同时自动拆箱时,编译器通过调用类似intValue(),doubleValue()这类的方法将对象转换成原始类型值。
- 自动装箱是将boolean值转换成Boolean对象,byte值转换成Byte对象,char转换成Character对象,float值转换成Float对象,int转换成Integer,long转换成Long,short转换成Short,自动拆箱则是相反的操作。
1 //before autoboxing 2 Integer iObject = Integer.valueOf(3); 3 int iPrimitive = iObject.intValue() 4 5 //after java5 6 Integer iObject = 3; //autobxing - primitive to wrapper conversion 7 int iPrimitive = iObject; //unboxing - object to primitive conversion
说个int和integer的区别,方便理解拆装箱。
int是基本数据类型之一,integer是复杂基本类型,也可以理解为class.
初始化int时初始为0,初始化integer时初始为null。
举个例子:当需要往ArrayList,HashMap中放东西时,像int,double这种内建类型是放不进去的,因为容器都是装 object的,这是就需要这些内建类型的外覆类了。