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比較就對了。
相關文章
相關標籤/搜索