1. 程式人生 > >Integer之間的比較不要使用==

Integer之間的比較不要使用==

有時候用Integer代表int型別的時候經常會判斷是否相等,最習慣的寫法就是aa==bb這種,然而發現這樣存在很大的問題,先看下面兩個場景
場景A:

Integer aa=100;
Integer bb=100;

System.out.println(aa==bb);
System.out.println(aa.equals(bb));
這裡輸出兩個都是true

場景B:
Integer aa=1000;
Integer bb=1000;

System.out.println(aa==bb);
System.out.println(aa.equals(bb));
這裡輸出第一個是false,第二個是true

為啥???
在-128 and 127 之間建立的Integer物件會使用IntegerCahe,它是一個Integer陣列;區間內直接返回陣列中的Integer object,
所以使用比較操作符(==, !=)沒問題;但超過這個區間,還是會new物件出來,用比較操作符自然就不行了,所以對於Object型別,我們無論如何都用equals比較就對了。