A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

判断以下程序打印的结果:
        Integer i1 = new Integer(97);
        Integer i2 = new Integer(97);
        System.out.println(i1 == i2);               
        //false,==好判断的是地址值,i1和i2的在内存中开辟了两个内存空间,地址值不同
       
        System.out.println(i1.equals(i2));       
        //true,equals方法比较的是内容,i1和i2内容相同
        System.out.println("-----------");
       
        Integer i3 = new Integer(197);
        Integer i4 = new Integer(197);
        System.out.println(i3 == i4);               
        //false,同i1和i2,两者地址值不同
       
        System.out.println(i3.equals(i4));       
        //true,同i1和i2,两者内容相同
       
        System.out.println("-----------");
       
        Integer i5 = 127;
        Integer i6 = 127;
        System.out.println(i5 == i6);               
        //true,在byte范围内,同时没有用new创建对象,自动装箱就不会新创建对象,而是从常量池中获取
       
        System.out.println(i5.equals(i6));       
        //true,同i1和i2,两者内容相同
       
        System.out.println("-----------");
       
        Integer i7 = 128;
        Integer i8 = 128;
        System.out.println(i7 == i8);
       
        //false,超过了byte取值范围就会再新创建对象
       
        System.out.println(i7.equals(i8));       
        //true,同i1和i2,两者内容相同

总结:-128到127是byte的取值范围,如果在这个取值范围内,自动装箱就不会新创建对象,而是从常量池中获取
      如果超过了byte取值范围就会再新创建对象

1 个回复

倒序浏览
总结的漂亮,又学到新东西了,赞
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马