簡體   English   中英

Java String hashCode為null字符串

[英]Java String hashCode of null string

唯一有趣的是,為什么java.lang.String中的方法hashCode()不是靜態的? 如果返回null,例如-1? 因為經常需要做一些像:

String s;
.............
if (s==null) {
  return 0;}
else {
  return s.hashCode();
}

謝謝。

正如其他人所說, hashCodeObject上的一個方法,並且是非靜態的,因為它本身就依賴(即屬於)一個對象/實例。

請注意,Java 7引入了Objects類,它具有hashCode(Object)方法,它完全符合您的要求:如果o為非null,則返回o.hashCode()否則返回0

這個類也有與possibly-處理等方法null值,如equals(Object, Object)toString(Object)和其他幾個人。

因為如果它是靜態的"1".hashCode()"2".hashCode()會返回相同的值,這顯然是錯誤的。

它是特定的每個實例,並受其影響,因此它不能是靜態的。

因為String的哈希碼是該String的屬性。

通過相同的思路,您可以使每個方法都是靜態的。

hashCode用於獲取對象的hashCode,以便知道必須在該HashMap哪個桶中放置該對象。 因此它必須是對象的實例方法,並且必須以多態方式調用它。

null可以用作HashMap中的鍵,但它被視為一種特殊情況。

您似乎將hashCode用於其他目的,因此您必須以特定方式處理。

它返回的Object hashCode不是一個類。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM