Java中的数组复制
可以使用以下方法将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 ]