配列をコピーするときに使われるarraycopy()。今回はarraycopy()を勉強していきたいと思います。
arraycopy()とは
Systemクラスのメソッドのひとつがarraycopy()です。配列をコピーするときに使われ、開始位置や要素数を指定することができます。
構文
System.arraycopy(コピー元, コピー元開始位置, コピー先, 開始位置, いくつコピーするか)
引数が多いので少しわかりづらいですが、実際に書いてみると理解が深まると思います。
System.arraycopy(arrayA, 0, arrayB, 0, 3)
コピー元が「arrayA」でarrayAの0番目の要素からコピーを開始します。コピー先は「arrayB」の0番目にarrayAの0番目から3つの要素をコピーします。
※ 数値の概念が配列と混同してしまいますが、0番目から3つの要素を数えるときは以下の図のように数えるとわかりやすいかと思います。
arraycopy()サンプルコード
arraycopy()の理解を深めるためにサンプルコードを用意しました。
arraycopy() 2つの要素をコピー
char[] arrayA = { ‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’, ‘g’};
char[] arrayB = new char[5];
System.arraycopy(arrayA, 5, arrayB, 3, 2);
for( char tes : arrayB){
System.out.print(tes);
}
■結果
fg
arrayB[3]に「f」、arrayB[4]に「g」がコピーされました。
arraycopy() でArrayIndexOutOfBoundsException
char[] arrayA = { ‘a’, ‘b’, ‘c’};
char[] arrayB = new char[arrayA.length];
System.arraycopy(arrayA, 0, arrayB, 0, 5);
コピー元の要素数より多くコピーしようとしたためArrayIndexOutOfBoundsExceptionが発生します。