/* JDK5.0新特性: 以下的特性适合JDK1.5版本之后的。包括1.5 jdk1.4,包括1.4在内之前的所有版本不能使用以下特性。 自动装箱(auto_boxing)和自动拆箱(auto_unboxing) */ public class IntegerTest05{ public static void main(String[] args){ //JDK5.0之前的. //int-->Integer (装箱) Integer i1 = new Integer(10); //Integer-->int (拆箱) int i2 = i1.intValue(); //JDK5.0之后,包括5.0 Integer i3 = 10; //自动装箱 int i4 = i3; //自动拆箱 System.out.println(i3); //"10" System.out.println(i4+1); //11 //JDK5.0之后 m1(321); //自动装箱. System.out.println(m2(10,5) + 1); //自动装箱 } public static void m1(Object o){ System.out.println(o); } public static int m2(Integer i1,Integer i2){ return i1 - i2; //自动拆箱 } } //深入了解自动装箱和自动拆箱 /* 深入自动装箱和自动拆箱: 1.自动装箱和自动拆箱是程序编译阶段的一个概念, 和程序运行无关。 2.自动装箱和自动拆箱主要目的是方便程序员编码。 */ public class IntegerTest06{ public static void main(String[] args){ Integer i1 = new Integer(10); Integer i2 = new Integer(10); //这里不会有自动拆箱 System.out.println(i1==i2); //false //比较两个Integer类型的数据是否相等,不能用"==" //Integer已经重写了Object中的equals方法. System.out.println(i1.equals(i2)); //true //重点: Integer i3 = 128; Integer i4 = 128; //上面的等同于 //Integer i3 = new Integer(128); //Integer i4 = new Integer(128); System.out.println(i3==i4); //false //注意以下程序. //如果数据是在(-128~127)之间,java中引入了一个“整型常量池”,在方法区中。 //该整型常量池只存储-128~127之间的数据。 Integer i5 = 127; //这个程序不会在堆中创建对象,会直接从整型常量池中拿. Integer i6 = 127; System.out.println(i5==i6); //true Integer i7 = -128; Integer i8 = -128; System.out.println(i7==i8); //true Integer i9 = -129; Integer i10 = -129; System.out.println(i9==i10); //false } }
本文出自 “gaogaozi” 博客,请务必保留此出处http://hangtiangazi.blog.51cto.com/8584103/1662493
原文地址:http://hangtiangazi.blog.51cto.com/8584103/1662493