数组在 Java 中的复制
Java 中数组可使用以下方式复制到另一个数组中。
使用变量赋值。此方法具有副作用,因为更改数组的元素将反映在两个地方。为防止此副作用,以下是复制数组元素的较好方法。
创建长度相同的数组并复制每个元素。
使用数组的克隆方法。克隆方法创建一个大小相同的数组。
使用 System.arraycopy() 方法。arraycopy() 可用于复制数组的子集。
示例
创建一个名为 Tester 的 Java 类。
Tester.java
public class Tester { public static void main(String args[]) { //Scenario 1: Copy array using assignment int[] a = {1, 2, 3}; int[] b = a; //test side effect b[0]++; System.out.println("Scenario 1: "); System.out.print("Array a: "); printArray(a); System.out.print("Array b: "); printArray(b); //Scenario 2: Copy array by iterating int[] c = {1, 2, 3}; int[] d = new int[c.length]; for (int i = 0; i < d.length; i++) { d[i] = c[i]; } //test side effect d[0]++; System.out.println("Scenario 2: "); System.out.print("Array c: "); printArray(c); System.out.print("Array d: "); printArray(d); //Scenario 3: Copy array using clone int[] e = {1, 2, 3}; int[] f = e.clone(); //test side effect f[0]++; System.out.println("Scenario 3: "); System.out.print("Array e: "); printArray(e); System.out.print("Array f: "); printArray(f); //Scenario 4: Copy array using arraycopy int[] g = {1, 2, 3}; int[] h = new int[g.length]; System.arraycopy(g, 0, h, 0, h.length); //test side effect 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 ]
广告