1. 程式人生 > >Integer 使用==比較

Integer 使用==比較

@Test
    public void test1() {
        Integer i1=1;
        Integer i2=1;
        System.out.println(i1==i2);//true
        System.out.println("------------------------------------------");
        Integer i3=129;
        Integer i4=129;
        System.out.println(i3==i4);//false
         /*知識點分析:自動裝箱,Integer i=1; 相當於  Integer i=Integer.valueOf(1);點開valueOf的原始碼
        public static Integer valueOf(int i) {
        if (i >= -128 && i <= 127)
            return IntegerCache.cache[i + (-IntegerCache.low)];
        return new Integer(i);
        }
       可以發現,當i >= -128 && i <= 127時,會返回一個快取中已有的Integer物件,
       所以i=1時使用==比較物件時,為true,而i=129時,是false
        */
        System.out.println("------------------------------------------");
        int i5=129;
        System.out.println(i4==i5);
        /*true,知識點分析:自動拆箱,Integer型別與int型別用==比較時會自動拆箱成int型別與之比較,隱式執行 int i=Integer.intValue();,兩個int型別用==比較,自然為true
        */
    }