/*
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
}
}
转载于:https://blog.51cto.com/hangtiangazi/1662493