兩個 Long 類型為什么不能直接用==比較


這要說到==和 equals 的區別了。

1. ==比較的是兩個對象在內存中的地址值(棧中的內容)。

2.equals 是 java.lang.Object 類的一個方法。equals 比較的是兩個對象的內容(堆中的內容)。java 中所有的類都默認繼承於 Object,所以所有的類都有這個方法。

但是 Long 是一個對象,是對 long 的封裝。我們看一下 Long 對象的源碼,里面的 equals 方法是這么寫的:

1     public boolean equals(Object obj) {
2         if (obj instanceof Long) {
3             return value == ((Long)obj).longValue();
4         }
5         return false;
6     }

所以兩個 Long 類型的變量進行比較的話,要么用 equals,要么先調用longValue 方法,拿到里面的 long 值之后再進行==比較。

 


免責聲明!

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



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