Nilai hashCode dari Java String dikomputasi sebagai ( String.hashCode () ):
s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]
Apakah ada keadaan (katakanlah versi JVM, vendor, dll.) Di mana ungkapan berikut akan dinilai salah?
boolean expression = "This is a Java string".hashCode() == 586653468
Pembaruan # 1: Jika Anda mengklaim bahwa jawabannya adalah "ya, ada beberapa keadaan" - maka tolong berikan contoh konkret kapan "Ini adalah string Java" .hashCode ()! = 586653468. Cobalah untuk menjadi spesifik / konkret mungkin.
Pembaruan # 2: Kita semua tahu bahwa mengandalkan detail implementasi hashCode () secara umum buruk. Namun, saya sedang berbicara secara khusus tentang String.hashCode () - jadi harap tetap fokus pada String.hashCode (). Object.hashCode () sama sekali tidak relevan dalam konteks pertanyaan ini.