仮定して、私たちがクラスを持っているとしましょう。
以下では、浅いコピーと深いコピーの違いを 2 つの図で示します。
- 浅いコピー
- 深いコピー
注意事項:#
私たちがクラスを持っていると仮定し、浅いコピーを行います。
この時、出力結果は次のようになります。
つまり、ここでは以前の図と同様に浅いコピーは行われていません。これは、オブジェクト x の値とオブジェクト y の値が異なるためです。これは、String や Integer などのラッパークラスが変更不可能なオブジェクトであるためです。変更不可能なオブジェクトの値を変更する必要がある場合、新しい値を格納するために新しいオブジェクトをメモリに生成し、元の参照を新しいアドレスに指す必要があります。