作成したオブジェクト:
char[] copyThree = new char[7];
GC されます。「最終結果」は次の方法で達成できます。
char[] copyThree = copyFrom.clone();
を使用しSystem.arrayCopy
、配列の型や配列のサイズなどの特定の要件を満たす必要がありますcopyFrom
。copyTo
メソッドを使用するclone
と、他の配列と同じ内容を持つ新しい配列が作成されます (同じオブジェクト - 同じ参照であり、同じ内容の異なるオブジェクトではありません)。もちろん、配列の型は同じでなければなりません。
どちらの方法でも、配列の内容の参照をコピーします。それらはclone
オブジェクトではありません:
Object[] array = new Object[] {
new Object(),
new Object(),
new Object(),
new Object()};
Object[] otherArray = new Object[array.length];
Object[] clonedArray = array.clone();
System.arraycopy(array, 0, otherArray, 0, array.length);
for (int ii=0; ii<array.length; ii++) {
System.out.println(array[ii]+" : "+otherArray[ii]+" : "+clonedArray[ii]);
}
以下を提供します。
java.lang.Object@1d256a73 : java.lang.Object@1d256a73 : java.lang.Object@1d256a73
java.lang.Object@36fb2f8 : java.lang.Object@36fb2f8 : java.lang.Object@36fb2f8
java.lang.Object@1a4eb98b : java.lang.Object@1a4eb98b : java.lang.Object@1a4eb98b
java.lang.Object@2677622b : java.lang.Object@2677622b : java.lang.Object@2677622b