jdk 1.5 以后引入的新特性,自动拆箱和自动装箱。
自动装箱与拆箱的功能是编译器自动完成的。例如:
Integer i = 3;编译器在编译的时候解释为Integer i = new Integer(3);自动装箱。
i+13;编译器会解释为 i.intValue()+13; 自动拆箱。
自动装箱、拆箱的功能提供了方便性,但隐藏了一些细节得小心。- class demo1
- {
- public static void main(String[] args)
- {
- Integer i1 = 100;
- Integer i2 = 100;
- if (i1 == i2)
- System.out.println("i1 == i2");
- else
- System.out.println("i1 != i2");
- }
- }
- class demo2
- {
- public static void main(String[] args)
- {
- Integer i3 = 200;
- Integer i4 = 200;
- if (i3 == i4)
- System.out.println("i3 == i4");
- else
- System.out.println("i3 != i4");
- }
- }
复制代码 第一个输出结果:i1 = i2
第二个输出结果:i3 != i4
因为当数值在byte(–128到127)范围内容,对于新特性,如果该数值已经存在,则不会在开辟新的空间。
i1 和 i2指向了同一个Integer对象
i3 和 i4指向了不同Integer对象 |