• Integer 自动装箱机制


    Integer a1 = 100;  
    Integer a2 = 100;  
    System.out.println(a1 == a2);   // true  
     
    Integer b1 = new Integer(100);  
    Integer b2 = new Integer(100);  
    System.out.println(b1 == b2);   // false  
     
    Integer c1 = 150;  
    Integer c2 = 150;  
    System.out.println(c1 == c2);   // false 

    碰见这段代码,会让人很头疼,下面我就这样来解释下

    1:Integer是有一个取值范围的(-128~127)

    这个值是这样得到的

    int min = 0;
            int max = 0;
            Integer a;
            Integer b;
            for(int i = -9999 ; i<9999;i++){
                a = i;
                b = i;
                if(a == b){
                    min = i;
                    break;
                }
            }
            for(int i = min;i<9999;i++){
                a = i;
                b = i;
                if(a != b){
                    max = i-1;
                    break;
                }
            }
            System.out.println(min+"~"+max);    //-128~127
            

    2.下面我用一段代码来解释下为什么第一段代码会有那样子的结果。

                    //a1和a2是两个对象,用==判断时由于对象的引用不同则输出false
            Integer a1 = new Integer(123);
            Integer a2 = new Integer(123);
            System.out.println(a1 == a2);
            
            //Integer的取值范围是-128~127
            //当给Integer赋值超出了Integer的取值范围时,则会自动创建对象
            //Integer c1 = new Integer(654);
            //Integer c2 = new Integer(654);
            //这样子用==判断时,则判断对象引用地址是否同一个
            Integer b1 = 111;
            Integer b2 = 111;
            Integer c1 = 654;
            Integer c2 = 654;
            System.out.println(b1 == b2);
            System.out.println(c1 == c2);    

    这个就是自动装箱机制的结果

  • 相关阅读:
    制作keil5的pack
    【转】链接脚本(1)
    mongodb数据到MySQL数据库 的迁移步骤
    mongo副本集设置主库权重,永远为主
    mongodb副本集的从库永久性设置setSlaveOk
    Ubuntu系统查看mongo得慢日志,及一些操作
    Ubuntu系统下手动释放内存
    linux下面得小数计算
    Syncthing搭建
    ubuntu搭建ftp服务器
  • 原文地址:https://www.cnblogs.com/BrightMoon/p/3003214.html
Copyright © 2020-2023  润新知