Java复制数组

示例

Java提供了几种复制数组的方法。

for循环

int[] a = { 4, 1, 3, 2 };
int[] b = new int[a.length]; 
for (int i = 0; i < a.length; i++) {
    b[i] = a[i];
}

请注意,将此选项与Object数组而不是原始数组一起使用将使用原始内容而不是原始内容的引用填充副本。

Object.clone()

由于数组是ObjectJava中的,因此可以使用。Object.clone()

int[] a = { 4, 1, 3, 2 };
int[] b = a.clone(); // [4,1,3,2]

注意,Object.clone用于数组的方法执行浅表复制,即,它返回对新数组的引用,该新数组引用源数组相同的元素。


Arrays.copyOf()

java.util.Arrays提供了一种将数组复制到另一个数组的简便方法。这是基本用法:

int[] a = {4, 1, 3, 2};
int[] b = Arrays.copyOf(a, a.length); // [4,1,3,2]

请注意,这Arrays.copyOf还提供了一个重载,允许您更改数组的类型:

Double[] doubles = { 1.0, 2.0, 3.0 };
Number[] numbers = Arrays.copyOf(doubles, doubles.length, Number[].class);


System.arraycopy()

public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length) 从指定的源数组(从指定位置开始)复制数组到目标数组的指定位置。

下面是一个使用示例

int[] a = { 4, 1, 3, 2 };
int[] b = new int[a.length];
System.arraycopy(a, 0, b, 0, a.length); // [4,1,3,2]


Arrays.copyOfRange()

主要用于复制数组的一部分,也可以使用它将整个数组复制到另一个数组,如下所示:

int[] a = { 4, 1, 3, 2 };
int[] b = Arrays.copyOfRange(a, 0, a.length); // [4,1,3,2]