これは、オブジェクトについてもう少し理解を深めるための良い練習になると思いました。元の参照変数を変更した後にJavaオブジェクトを再度参照する方法
オブジェクトの元の参照変数を変更した後でオブジェクトを再度参照する方法を理解しようとしています。
は、次のコードを取る:
String person = "person a"; //Line 1
person = "person b"; //Line 2
は今、1行目は、参照変数がperson
をされた新しいStringオブジェクトを作成します。 2行目はその参照変数を別の新しいStringオブジェクトに割り当てます。元のStringオブジェクトは参照変数を持たないようになりました。
すでに1行目のメモリにある元のStringオブジェクトをどのように戻して参照するのですか?例えば、リファレンス変数person
を元のStringオブジェクトに割り当てて戻します。その後の考えとして、私はガベージコレクションについて多くのことを知っているわけではありませんが、ガベージコレクションの対象となる元のオブジェクトは、2行目以降も参照変数を持たないため、再度参照することはできません。
私はhashCode()
メソッドを参照していますが、System.identityHashCode()
も表示されていますが、元のオブジェクトを再度参照するためにすべてを実装する方法を理解できません。
できません。以前の値を一時変数に格納し、それを介してアクセスします。 –
'hashCode()'(および 'System.identityHashCode()')は特定のオブジェクトを取得するためのものではありません。その値をメモリアドレスとして解釈することはできません。ハッシュコードは、2つのオブジェクトが確実に等しくないかどうかを判断するためのものです。 –
@AndyTurnerしたがって、2つのオブジェクトが同じ「ハッシュコード」を持つ場合、それらは同じメモリアドレスを持つとは言えませんか? –