一、自动装箱和拆箱
1.自动装箱
JDK5之前,如果要实现一个Integer类型的对象,需要如下这样实现:
Integer i = new Integer(1);
JDK5推出自动装箱的语法特性之后,如果实现一个Integer对象,只需这样:
Integer i = 1;
自动装箱就是自动把基础类型转换为包装类型的操作。
2.拆箱
拆箱和装箱对应,示例如下:
Integer i = 1; //此处是装箱
int a = i; //此处是拆箱
简答来说,拆箱就是把包装类型转换为基础类型的操作
二、实现
还是以Integer为例,代码如下:
public class BoxTest {
public static void main(String[] args) {
Integer i = 1; //装箱
int a = i; //拆箱
}
}
然后我们把类反编译一下,反编译代码如下:
public class BoxTest
{
public static void main(String[] args)
{
Integer i = Integer.valueOf(1); //此处是装箱的过程
int a = i.intValue(); //此处是拆箱的过程
}
}
从上面的示例中可以看到,装箱是调用的Integer的valueOf()方法,拆箱是调用Integer的intValue()方法。也可以简单的理解为装箱是调用包装类型的valueOf()方法,拆箱是调用包装类型的intValue()方法(intValue是对示例来说的,其它的封装类有自己对应的方法)。