JDK1.5版本后基本数据包装类的新特性

来源:互联网 发布:win10 mac 双系统 编辑:程序博客网 时间:2024/05/20 09:22


1,自动装箱与自动拆箱

Integer x = new Integer(4);

Integer x = 4;   //自动装箱   跟上一行代码实际效果一样.而在1.5之前编译时无法通过的.

x = x+ 2;  //先对x 进行自动拆箱。变成int类型。和2进行加法运算。再将和进行装箱赋给x。

2,基本数据类型的对象缓存

Integer a = 127;
Integer b = 127;
System.out.println("a==b:"+(a==b));

结果为true,为什么呢?因为对于1.5的新特性,当数值在byte范围内,如果该数值已经存在,则不会在开辟新的空间。

所以a和b指向了同一个对象.

如果写成

Integer a =new Integer( 127);
Integer b = new Integer(127);
System.out.println("a==b:"+(a==b));

则输出结果为false.

同样的,当数值超过byte范围时,例如:

Integer a = 128;
Integer b = 128;
System.out.println("a==b:"+(a==b));

输出结果为false;

如果是System.out.println(a.equals(b));则输出结果为true,因为Integer的equals方法比较的是int的值,而不是对象.

所以

Integer a =new Integer( "127");
Integer b = new Integer(127);
System.out.println("a==b:"+a.equals(b));  结果为true.

原创粉丝点击