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 日

2.9 萬+ 次瀏覽

開啟您的 職業生涯

透過完成課程獲得認證

開始
廣告
© . All rights reserved.