自动装箱和自动拆箱是JDK5版本中的新特性, 到现在已经不怎么新了~用的很平常了.
如JDK5之前用一个整形对象 就必须 Integer i = new Integer(1);
现在可以直接Integer i = 1; 其实编译器还是执行的 Integer i = new Integer(1);
-128-127之间的整数封装成对象后 , 数值一样的其实是同一个对象(享元模式(flyweight))
Integer num3=12;
Integer num4=12;
Integer num5=129;
Integer num6=129;
int num7=129;
int num8=129;
System.out.println(num3==num4); true
System.out.println(num5==num6); false (>127)
System.out.println(num7==num8); 基本数据类型
当需要一个对象,而我们可以直接用一个基本数据类型填上, 这时就用到了自动装箱
当需要一个基本数据类型, 而我们可以用对象填上, 这是编译器就是 自动拆箱
String str1 = "abc";
String str2 = "abc";
System.out.println(str2==str1); //输出为 true 指向了同一个内存
System.out.println(str2.equals(str1)); //输出为 true
String str3 = new String("abc");
String str4 = new String("abc"); //分别划分了一块内存
System.out.println(str3==str4); //输出为 false
System.out.println(str3.equals(str4)); //输出为 true