JavaのString
クラスを見ると、最初の評価後にハッシュコードがキャッシュされていることがわかります。java文字列ハッシュコードキャッシュメカニズム
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;
}
ここで、hash
はインスタンス変数です。私には質問がありますが、なぜそれが必要でしょうかh
余分な変数はありますか?
'String'クラスがスレッドセーフであることを保証するために、このように記述されています。このコンセプトについての詳細はこちら[こちら](https://en.wikipedia.org/wiki/Thread_safety) – Valy
ウィキペディアのリンクでは、ここで何が起こっているのか、その理由を詳しく説明していません。 –