zoukankan      html  css  js  c++  java
  • 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);    

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

  • 相关阅读:
    eclipse生成jar包 注意事项!
    java结合testng,利用XML做数据源的数据驱动示例
    2018 计蒜之道 初赛 第二场
    2018 计蒜之道 初赛 第一场
    Tarjan&&缩点简析
    POJ1159
    POJ1080
    POJ1260
    POJ2533&&1836&&3176
    Luogu P1484 种树
  • 原文地址:https://www.cnblogs.com/BrightMoon/p/3003214.html
Copyright © 2011-2022 走看看