■シャローコピー
浅いコピー。参照をコピーする。
よって、コピー先を修正するとコピー元にも影響が出る。
配列のシャローコピーを行うstaticメソッドとして、
System.arraycopy(コピー元配列, コピー元開始インデックス, コピー先配列, コピー先開始インデックス, コピーする要素数)
がある。
■ディープコピー
深いコピー。インスタンスを新たに生成して内容をコピーする。
どのようにコピーするかはObjectのcloneメソッドをオーバーライドして定義する。
Objectのcloneメソッド自体はシャローコピーをするので注意。
配列のcloneメソッドはディープコピーをするようにオーバーライドされている。
(publicかつCloneNotSupportedExceptionをスローしないようにもしている。Objectのcloneはprotected。)
なお、java.lang.Cloneableを実装していないオブジェクトでcloneメソッドを呼び出すと、CloneNotSupportedExceptionがスローされる。