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比較就對了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM