Integer 使用==比較
阿新 • • 發佈:2018-12-17
@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 */ }