Javaで配列をコピーする方法について記載します。
配列をコピーする方法
Arraysクラスの、copyOf メソッドを使用します。
構文
copyOf(コピー対象の配列, コピーする長さ)
戻り値
コピー後の配列
まずは、配列変数を別の変数に代入した際の動作をみてみます。
実行例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
int[] i1 = {1,2,3,4,5}; // ① 変数 i1 を i2 に代入 int[] i2 = i1; // ② i2 の インデックス0の値を更新 i2[0] = 10; // ③ i1 と i2 の参照が同じため、i1の配列の内容を表示すると ②で更新した内容になる System.out.println( Arrays.toString(i1) ); // [10, 2, 3, 4, 5] // i1 と i2 の参照が同じなので、trueになる System.out.println( i1.equals(i2) ); // true |
次に、Arrays.copyOf を使用して配列をコピーします。
実行例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
int[] i1 = {1,2,3,4,5}; // Arrays.copyOfを使用してコピー int[] i2 = Arrays.copyOf(i1, i1.length); // i2 の インデックス0の値を更新 i2[0] = 10; // i1 と i2 の値が異なる System.out.println( Arrays.toString(i1) ); // [1, 2, 3, 4, 5] System.out.println( Arrays.toString(i2) ); // [10, 2, 3, 4, 5] // i1 と i2 の参照が異なるため、falseになる System.out.println( i1.equals(i2) ); // false |
実行例から、Arrays.copyOf を使用するとコピー元とコピー先の参照が異なるため、それぞれ独立した配列になっていることが分かります。