陣列在 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 ]

更新於: 2023 年 9 月 13 日

29K+ 瀏覽量

開啟您的 職業

透過完成課程獲得認證

開始
廣告
© . All rights reserved.