在Java1.5以后,JDK支持装箱和拆箱操作。
装箱即是我们在用基本类型的包装类定义对象的时候,可以将一个基本类型的数据赋给该对象,JDK会自动帮助我们将该数据包装成一个包装
类的对象。如下所示:
Integer integerValue_1=23;
这样的方式在JDK1.5以前的版本中式不支持的。
而拆箱则是指包装类的对象与基本类型的数据进行混合运算的时候,JDK会自动将包装类对象拆分成基本数据类型,如下面所示:
integerValu_1+34;
当执行这个操作时,JDK会自动将integerValue_1中的值23拆分出来与34进行运算。
在拆箱和装箱过程中,Java使用了一种设计模式,即是享元模式,也是说,在进行装箱时,JDK会自动保留一个缓冲区,这个缓冲区内保存
着已经被装箱过的对象。
举整形的例子,JDK会在装箱时检查赋给包装对象的基本类型的值,如果该值在-128至127之间,也是一个字节的大小,则JDK会先检查缓
冲区中是否已经存在了该基本类型值所对应的包装对象,有则返回该对象,没有则新建一个。而大小超过1字节的整数将每一次都重新建立一
个对该数据进行包装的包装对象。
Integer t1=13;
Integer t2=13;
Integer t3=222;
Integer t4=222;
System.out.println(t1==t2);
System.out.println(t3==t4);
可以看到,程序输出了true和false,==比较两个对象时,比较的是两个对象首地址是否相同,从两面的例子可以看出,t1和t2时相同的对
象,而t3和t4不是相同对象。