复制数组
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 中的 Object
s,你可以使用 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]