java数组如何复制
使用System.arraycopy方法
System.arraycopy是Java中高效的原生数组复制方法,适用于任何类型的数组。需要指定源数组、源起始位置、目标数组、目标起始位置及复制长度。
int[] source = {1, 2, 3, 4, 5};
int[] destination = new int[5];
System.arraycopy(source, 0, destination, 0, source.length);
使用Arrays.copyOf方法
Arrays.copyOf会创建一个新数组,并自动截断或填充默认值(如0或null)以匹配指定长度。

int[] original = {1, 2, 3};
int[] copied = Arrays.copyOf(original, original.length); // 复制整个数组
int[] resized = Arrays.copyOf(original, 5); // 新数组长度为5,多出部分填充0
使用Arrays.copyOfRange方法
复制数组的指定范围,包含起始索引(包含),结束索引(不包含)。
int[] array = {10, 20, 30, 40, 50};
int[] partialCopy = Arrays.copyOfRange(array, 1, 4); // 结果为{20, 30, 40}
使用clone方法
数组对象实现了Cloneable接口,直接调用clone()会生成一个浅拷贝的新数组。

String[] names = {"Alice", "Bob"};
String[] clonedNames = names.clone();
手动循环复制
通过遍历源数组逐个赋值,适合需要额外逻辑处理的场景。
double[] data = {1.1, 2.2, 3.3};
double[] manualCopy = new double[data.length];
for (int i = 0; i < data.length; i++) {
manualCopy[i] = data[i];
}
对象数组的深拷贝
若数组元素是对象,需单独处理每个对象的拷贝。以下示例使用流式操作:
class Person implements Cloneable {
String name;
@Override protected Object clone() throws CloneNotSupportedException {
return super.clone();
}
}
Person[] people = new Person[2];
people[0] = new Person();
Person[] deepCopy = Arrays.stream(people)
.map(p -> { try { return (Person)p.clone(); } catch (Exception e) { return null; }})
.toArray(Person[]::new);






