O valor hashCode de uma String Java é calculado como ( String.hashCode () ):
s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]
Existem circunstâncias (por exemplo, versão da JVM, fornecedor etc.) sob as quais a expressão a seguir será avaliada como falsa?
boolean expression = "This is a Java string".hashCode() == 586653468
Atualização 1: se você afirmar que a resposta é "sim, existem circunstâncias" - forneça um exemplo concreto de quando "Esta é uma string Java" .hashCode ()! = 586653468. Tente ser o mais específico / concreto que possível.
Atualização 2: Todos sabemos que confiar nos detalhes da implementação de hashCode () é ruim em geral. No entanto, estou falando especificamente sobre String.hashCode () - portanto, mantenha a resposta focada em String.hashCode (). Object.hashCode () é totalmente irrelevante no contexto desta pergunta.