复制数组

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()

由于数组是 Java 中的 Objects,你可以使用 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]