在Java语言的学习过程中经常会遇到将数组中的元素全部复制到另一个数组中,很多同学使用的是以下方法,通过循环复制数组元素,该方法较为繁琐。
import java.util.Arrays;
public class ArrayCopy {
public static void main(String[] args) {
//数组a为原数组
int[] a = {2, 6, 8, 5, 4, 8, 11, 33, 56, 5, 3, 2, 7};
int[] b = new int[a.length];
for (int i = 0; i < a.length; i++) {
b[i] = a[i];
}
System.out.println(Arrays.toString(b));
}
}
实际上Java中提供了对应的数组复制的方法,方便大家使用,下面介绍两个常用的方法。
-
clone()方法:顾名思义,数组克隆方法
import java.util.Arrays;
public class ArrayCopy {
public static void main(String[] args) {
//数组a为原数组
int[] a = {2, 6, 8, 5, 4, 8, 11, 33, 56, 5, 3, 2, 7};
//将数组a的全部元素复制到数组b中
int[] b = a.clone();
System.out.println(Arrays.toString(b));
}
}
-
System.arraycopy()方法
将数组a从下标为0的元素开始,复制到数组b的下标为0的元素开始,复制的长度为a.length
import java.util.Arrays;
public class ArrayCopy {
public static void main(String[] args) {
//数组a为原数组
int[] a = {2, 6, 8, 5, 4, 8, 11, 33, 56, 5, 3, 2, 7};
//将数组a的全部元素复制到数组b中
int []b=new int[a.length];
//将数组a从下标为0的元素开始,复制到数组b的下标为0的元素开始,复制的长度为a.length
System.arraycopy(a, 0, b, 0, a.length);
System.out.println(Arrays.toString(b));
}
}
或者这样使用System.arraycopy()方法,将数组a和数组b的元素都复制到数组c中。
先把数组a的元素全部复制到数组c中下标从0开始,复制的长度为a.length,然后把数组b的元素复制到数组c中从下标为a.length的位置开始,复制元素的长度为b.length。
import java.util.Arrays;
public class ArrayCopy {
public static void main(String[] args) {
int[] a = {1, 2, 4, 55, 66, 113, 157, 182, 192, 201};
int[] b = {40, 45, 66, 70, 120, 140, 160, 200, 1655, 1732};
int[] c = new int[a.length + b.length];
//把数组a从0开始长度为a.length的元素复制到数组c的从0开始的数组部分
System.arraycopy(a, 0, c, 0, a.length);
//把数组b从0开始长度为b.length的元素复制到数组c的从a.length开始的数组部分
System.arraycopy(b, 0, c, a.length, b.length);
//输出数组
System.out.println(Arrays.toString(c));
}