Java では、 hashCode() メソッドがオブジェクトの一意の識別子を決定する際に重要な役割を果たします。固有のメソッドであるため、その動作は、オブジェクトのクラスによってオーバーライドされるかどうかによって異なります。そのままにした場合の hashCode() のデフォルトの実装を調べてみましょう。
hashCode() メソッドがオーバーライドされていない場合、HotSpot JVM (広く使用されている実装) Java) は、オブジェクトのヘッダーに乱数を生成して格納するメカニズムを採用しています。後続の hashCode() の呼び出しでは、この乱数が単純に取得されます。この動作は、オブジェクトの内容や場所と相関関係を持たずに、オブジェクトに予測不可能で一意の識別子を提供するように設計されています。
ハッシュ コードの生成戦略は制御可能です-XX:hashCode=n HotSpot JVM 経由オプション:
-XX:hashCode=4 を指定しても生成されたハッシュ コードは、オブジェクトの再配置の可能性があるため、オブジェクトのメモリ アドレスを直接反映しない可能性があることに注意することが重要です。さらに、オブジェクトアドレスの分散が悪い場合、不均衡なハッシュテーブルが発生する可能性があります。
以上がJava オブジェクトの「hashCode()」がオーバーライドされない場合、どうなりますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。