自动装箱拆箱测试

/*
 * 自动装箱拆箱测试
 */
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
        
    }
    
}

 

posted @ 2017-11-16 15:24  阿尔伯特爱因斯坦  阅读(186)  评论(0编辑  收藏  举报