當Long型使用equals的時候出現的問題,無法判斷怎麼辦?

1111
今天在寫項目的時候,出現long型問題的判斷

Long id = 1212121218888L;
System.out.println(id.equals(1212121218888);  // false
System.out.printLn(id.equals(1212121218888L);  // true

多了一個 L ,就是true了,
看源碼可知:

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

Long 類型的重寫 equals 使用的是判斷的方式: instanceof ,使用instanceof的文檔
參考文檔 = https://www.cnblogs.com/ysocean/p/8486500.html
在第二行的時候, 使用 instanceof 判斷傳入的參數的類型是否能轉換成後面的Long類型 ,如果在這裏判斷都是 false 了, 那麼,就不進行下面的比較處理了, 所以 是否加 L 就意味着java的默認傳入機制是不是

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章