可以使用以下方法将Java中的数组复制到另一个数组。
使用变量赋值。此方法有副作用,因为对数组元素的更改会在两个地方反映出来。为避免这种副作用,以下是复制数组元素的更好方法。
创建一个相同长度的新数组,并复制每个元素。
使用数组的克隆方法。克隆方法将创建一个相同大小的新数组。
使用System.arraycopy()方法。arraycopy可用于复制数组的子集。
创建一个名为Tester的Java类。
测试器
public class Tester {
public static void main(String args[]) {
//方案1:使用分配复制数组
int[] a = {1, 2, 3};
int[] b = a;
//测试副作用
b[0]++;
System.out.println("Scenario 1: ");
System.out.print("Array a: ");
printArray(a);
System.out.print("Array b: ");
printArray(b);
//复制数组
int[] c = {1, 2, 3}; int[] d = new int[c.length];
for (int i = 0; i < d.length; i++) {
d[i] = c[i];
}
//测试副作用
d[0]++;
System.out.println("Scenario 2: ");
System.out.print("Array c: ");
printArray(c);
System.out.print("Array d: ");
printArray(d);
//方案3:使用clone复制数组
int[] e = {1, 2, 3};
int[] f = e.clone();
//测试副作用
f[0]++;
System.out.println("Scenario 3: ");
System.out.print("Array e: ");
printArray(e);
System.out.print("Array f: ");
printArray(f);
//复制数组
int[] g = {1, 2, 3};
int[] h = new int[g.length];
System.arraycopy(g, 0, h, 0, h.length);
//测试副作用
h[0]++;
System.out.println("Scenario 4: ");
System.out.print("Array g: ");
printArray(g);
System.out.print("Array h: ");
printArray(h);
}
public static void printArray(int[] a) {
System.out.print("[ ");
for (int i = 0; i < a.length; i++) {
System.out.print(a[i] + " ");
}
System.out.println("]");
}
}输出结果
编译并运行文件以验证结果。
Scenario 1: Array a: [ 2 2 3 ] Array b: [ 2 2 3 ] Scenario 2: Array c: [ 1 2 3 ] Array d: [ 2 2 3 ] Scenario 3: Array e: [ 1 2 3 ] Array f: [ 2 2 3 ] Scenario 4: Array g: [ 1 2 3 ] Array h: [ 2 2 3 ]