/*
* 自动装箱拆箱测试
*/
public class AutoUnboxingTest {
public static void main(String[] args) {
Integer a = new Integer(1);
Integer b = 1;
int c = 1;
/* a 指向堆中空间 , 而非new 生成的b指向java的常量池中的对象 Integer b =1编译期间 会翻译成 Integer b = Integer.valueOf(1);
其中valueOf里如果字面量的值在-128到127之间,会缓存,再次使用那么不会new新的Integer对象,而是直接引用常量池中的Integer对象 */
System.out.println(a==b); //false
/*Integer a = new Integer(1) 和 int c = 1比较时自动拆箱成int类型*/
System.out.println(a==c); //true
/**/
System.out.println(b==c); //true
Integer f1 = Integer.valueOf(1);
Integer f2 = Integer.valueOf(1);
Integer f3 = Integer.valueOf(150);
Integer f4 = Integer.valueOf(150);
//字面量的值在-128到127之间,那么不会new新的Integer对象,而是直接引用常量池中的Integer对象
System.out.println(f1==f2); //true
System.out.println(f3==f4); //false
}
}