有時候用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比較就對了。