Bir Java Dizesinin hashCode değeri ( String.hashCode () ) olarak hesaplanır :
s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]
Aşağıdaki ifadenin yanlış olarak değerlendirileceği herhangi bir koşul (örneğin JVM sürümü, satıcı vb.) Var mı?
boolean expression = "This is a Java string".hashCode() == 586653468
1. Güncelleme: Cevabın "evet, böyle durumlar var" olduğunu iddia ediyorsanız - o zaman lütfen "Bu bir Java dizesidir" .hashCode ()! = 586653468 ile ilgili somut bir örnek verin. Spesifik / somut olmaya çalışın olabildiğince.
2. Güncelleme: Hepimiz hashCode () 'un uygulama detaylarına güvenmenin genel olarak kötü olduğunu biliyoruz. Bununla birlikte, özellikle String.hashCode () hakkında konuşuyorum - bu yüzden lütfen cevabı String.hashCode () 'a odaklayın. Object.hashCode () bu soru bağlamında tamamen alakasızdır.