title: Consistency of hashCode() on a Java string
body: <p>The hashCode value of a Java String is computed as (<a href="http://java.sun.com/javase/6/docs/api/java/lang/String.html#hashCode()" rel="noreferrer">String.hashCode()</a>):</p>
  
  <pre><code>s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]
  </code></pre>
  
  <p>Are there any circumstances (say JVM version, vendor, etc.) under which the following expression will evaluate to false?</p>
  
  <pre><code>boolean expression = "This is a Java string".hashCode() == 586653468
  </code></pre>
  
  <p><b>Update #1:</b> If you claim that the answer is "yes, there are such circumstances" - then please give a concrete example of when "This is a Java string".hashCode() != 586653468. Try to be as specific/concrete as possible.</p>
  
  <p><b>Update #2:</b> We all know that relying on the implementation details of hashCode() is bad in general. However, I'm talking specifically about String.hashCode() - so please keep the answer focused to String.hashCode(). Object.hashCode() is totally irrelevant in the context of this question.</p>