JDK1.5提供了很多新的特性,比如基础数据类型的自动拆箱与自动装箱,有了这写新特性,开发人员可以很方便的对数据进行操作。
我们通过一个例子来说明:
代码如下:
public class AutoBoxTest {
public static void main(String[] args) {
/*自动装箱【基本数据类型12,可以直接赋值给Integer类型】*/
Integer num = 12;
/*自动拆箱【Integer类型可以和一个基本类型数据相加】*/
System.out.println(num + 1);
/*num1会等于num2吗?*/
Integer num1 = -128;
Integer num2 = -128;
System.out.println(num1 == num2);
/*num3会等于num4吗?*/
Integer num3 = 128;
Integer num4 = 128;
System.out.println(num3 == num4);
/*num5会等于num6吗?*/
Integer num5 = Integer.valueOf(128);
Integer num6 = Integer.valueOf(128);
System.out.println(num5 == num6);
}
}
上述程序输出的结果是:
num1 == num2;
num3 != num4;
num5 != num6;
为什么会出现这样的结果呢?
原因是:系统会缓存一个字节内的数据即【-128~127】,因为这些数据使用很频繁,只需一个对象即可,所以每次取值都一样。而超过这个范围的数据系统将不进行缓存,导致了数据的对象不同。这也称为享元模式【所谓的享元模式通俗地讲就是使用频繁的数据我们用一个对象来代表,不必每次使用都重新创建一个对象】