Java中Long類型是否相等的判斷方式


(轉)Java中判斷兩個Long類型是否相等

 

在項目中將兩個long類型的值比較是否相等,結果卻遇到了疑問?

下面就陪大家看看一個神奇的現象!

1.1問題?為什么同樣的類型,同樣的值,卻不相等呢?

1.2那么我們就需要探索一下源碼了

源碼中顯示,Long中有一個靜態的內部類LongCache,專門用於緩存-128至127之間的值,一共256個元素。

如果值在[-128, 127]之間,會放在緩存里面,而超過這個范圍就要new一個新的對象,也就是說==不能判斷對象是否相等。當然,如果值是在[-128, 127]之間的話是測不出來什么問題的。

 1.3解決方案!

可以使用.longValue() 或者..equals()進行比較。

 1.4最佳解決方案為 .eques()   我們可以先看.eques()的源碼。

它是先通過.longValue()方法獲取Long對象的基本類型long的值之后再做比較的。我們用longValue會比較容易忘記后面一個包裝類調longValue方法。

所以所我們最好用.eques()方法,當然也可以用.longValue()的!


免責聲明!

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



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