山傘のプログラミング勉強日記

プログラミングに関する日記とどうでもよい雑記からなるブログです。

Java で配列のコピー

配列の値をコピーする

配列の値のみをコピーしたいとき、"a = b"のように書くと、aの値を変えた時にbの値も変わってしまうことがあると思います。
値だけをコピーしたい場合、System.arraycopyやcloneを使うことで解決します。

コード

import java.util.Arrays;

public class Sample {
	public static void main(String[] args) {
		int []a = new int[] {1, 2, 3};
		int []b = a.clone();
		int []c = new int[3];
		System.arraycopy(a, 0, c, 0, 3);
		b[1] = 20;
		a[0] = 10;
		c[2] = 30;
		System.out.println("a = " + Arrays.toString(a));
		System.out.println("b = " + Arrays.toString(b));
		System.out.println("c = " + Arrays.toString(c));
	}
}

f:id:yamakasa3:20180318225037p:plain

Sytem.arrayの使い方は,
public static void arraycopy(Object src, int srcPos,Object dest, int destPos, int length)
パラメータ:src - 転送元配列。srcPos - ソース配列の開始位置。dest - 転送先配列。destPos - 転送先データ内の開始位置。length - コピーされる配列要素の数。
と書いてありました。

参考にしたサイト

www.sejuku.net