Java silverの学習において、
何度か配列のcloneメソッドで間違えたので、備忘録を残す。
配列のcloneメソッド
名の通り、配列のコピーを行うもので、同じ値を持った配列インスタンスが複製される。
int[] arrayA = {1,2,3};
int[] arrayB = arrayA.clone();
System.out.print(arrayA == arrayB); //false
上記だと、arrayAとarrayBには同じ{1,2,3}の値が入っていることになるが、
配列のインスタンスを複製しているので同一ではない。
注意したい点
配列をcloneすると同じ値を持った配列インスタンスが複製されますが、
参照先は同じなので、以下はtrueになる。
int[][] arrayA = {{1,2,3},{4,5,6}};
int[][] arrayB = arrayA.clone();
System.out.print(arrayA[0] == arrayB[0]); //true
また、clone後にarrayAの値を変更しても、arrayBの値に影響はない。
int[] arrayA = {1,2,3};
int[] arrayB = arrayA.clone();
arrayA[0] = 5;
//arrayB= {1,2,3}