Patrząc na klasę Java String
możemy zobaczyć, że kod mieszania jest buforowany po pierwszej ocenie.java string mechanizm buforowania hashcode
public int hashCode() {
int h = hash;
if (h == 0 && value.length > 0) {
char val[] = value;
for (int i = 0; i < value.length; i++) {
h = 31 * h + val[i];
}
hash = h;
}
return h;
}
Gdzie hash
jest zmienną instancji. Mam pytanie, dlaczego potrzebujemy dodatkowej zmiennej?
Jest napisany w ten sposób, aby zapewnić, że klasa 'String' jest wątkowo bezpieczna. Możesz przeczytać więcej o tej koncepcji [tutaj] (https://en.wikipedia.org/wiki/Thread_safety) – Valy
Ten link do Wikipedii nie wyjaśnia w pełni, co tu się dzieje i dlaczego. –