t'as regardé la jvm?
au moins dans classpath:
http://www.google.fr/codesearch?hl=fr&q=+classpath+String.java+show:UBWIvy4f1Ws:7dr-BbDnUfg:evllEXD0CUw&sa=N&cd=4&ct=rc&cs_p=ftp://ftp.gnu.org/gnu/classpath/classpath-0.92-generics.tar.gz&cs_f=classpath-0.92-generics/java/lang/String.java#first
/**
* Computes the hashcode for this String. This is done with int arithmetic,
* where ** represents exponentiation, by this formula:<br>
* <code>s[0]*31**(n-1) + s[1]*31**(n-2) + ... + s[n-1]</code>.
*
* @return hashcode value of this String
*/
public int hashCode()
{
if (cachedHashCode != 0)
return cachedHashCode;
// Compute the hash code using a local variable to be reentrant.
int hashCode = 0;
int limit = count + offset;
for (int i = offset; i < limit; i++)
hashCode = hashCode * 31 + value[i];
return cachedHashCode = hashCode;
}