HOWTO · Java

在 Java 中設定一個陣列等於另一個陣列

本教程演示如何在 Java 中設定一個陣列等於另一個陣列。

本頁內容

在 Java 中有幾種方法可以使陣列與另一個陣列相等。本教程演示如何在 Java 中將一個陣列值設定為等於另一個陣列值。

在 Java 中設定一個陣列等於另一個陣列

如上所述,可以使用多種方式將 Java 中的陣列設定為與另一個陣列相等。這裡有幾種方法:

  1. 建立一個與前一個長度相同的陣列,並複製每個元素。
  2. 使用 System.ArrayCopy() 方法,我們可以複製陣列的子集。它需要兩個陣列和輸出陣列的長度作為引數。
  3. 我們可以使用 clone() 方法克隆一個陣列。
  4. 使用 Array.copyof() 和 Arrays.copyOfRange() 方法,我們也可以複製一個陣列。Arrays.copyof() 方法將陣列和元素數量作為引數,Arrays.copyOfRange() 將陣列和元素範圍作為引數。
  5. 另外,將一個陣列分配給另一個陣列的一種最簡單的方法,但它有一個副作用,如果我們更改一個陣列的元素,稍後將在第二個陣列中更改它。以上所有方法都沒有這種副作用。

讓我們嘗試一個可以實現上述所有方法的示例。

package delftstack;

import java.util.Arrays;

public class Array_Copy {
  public static void main(String args[]) {
    // Method 1: Copy array by the same length
    String[] Array1 = {"delftstack1", "delftstack2", "delftstack3"};
    String[] Array2 = new String[Array1.length];
    for (int i = 0; i < Array2.length; i++) {
      Array2[i] = Array1[i];
    }
    System.out.println("Method 1: ");
    System.out.print("Array 1: " + Arrays.toString(Array1));
    System.out.print("\nArray 2: " + Arrays.toString(Array2));

    // Method 2: Using System.arraycopy method
    String[] Array3 = {"delftstack1", "delftstack2", "delftstack3"};
    String[] Array4 = new String[Array3.length];
    System.arraycopy(Array3, 0, Array4, 0, Array4.length);

    System.out.println("\nMethod 2: ");
    System.out.print("Array 3: " + Arrays.toString(Array3));
    System.out.print("\nArray 4: " + Arrays.toString(Array4));

    // Method 3: using clone() method
    String[] Array5 = {"delftstack1", "delftstack2", "delftstack3"};
    String[] Array6 = Array5.clone();

    System.out.println("\nMethod 3: ");
    System.out.print("Array 5: " + Arrays.toString(Array5));
    System.out.print("\nArray 6: " + Arrays.toString(Array6));

    // Method 4: using Arrays.copyOf() and Arrays.copyOfRange() methods
    String[] Array7 = {"delftstack1", "delftstack2", "delftstack3"};
    String[] Array8 = Arrays.copyOf(Array7, 3);
    String[] Array9 = Arrays.copyOfRange(Array7, 0, 3);

    System.out.println("\nMethod 4: ");
    System.out.print("Array 7: " + Arrays.toString(Array7));
    System.out.print("\nArray 8: " + Arrays.toString(Array8));
    System.out.print("\nArray 9: " + Arrays.toString(Array9));

    // Method 5: using clone() method
    String[] Array10 = {"delftstack1", "delftstack2", "delftstack3"};
    String[] Array11 = Array10;

    // Check the side effect
    Array10[2] = "Changed";
    System.out.println("\nMethod 5: ");
    System.out.print("Array 10: " + Arrays.toString(Array10));
    System.out.print("\nArray 11: " + Arrays.toString(Array11));
  }
}

上面的程式碼使用了上面描述的所有方法,並在 Java 中設定一個陣列等於另一個陣列,複製一個陣列。見輸出:

Method 1:
Array 1: [delftstack1, delftstack2, delftstack3]
Array 2: [delftstack1, delftstack2, delftstack3]
Method 2:
Array 3: [delftstack1, delftstack2, delftstack3]
Array 4: [delftstack1, delftstack2, delftstack3]
Method 3:
Array 5: [delftstack1, delftstack2, delftstack3]
Array 6: [delftstack1, delftstack2, delftstack3]
Method 4:
Array 7: [delftstack1, delftstack2, delftstack3]
Array 8: [delftstack1, delftstack2, delftstack3]
Array 9: [delftstack1, delftstack2, delftstack3]
Method 5:
Array 10: [delftstack1, delftstack2, Changed]
Array 11: [delftstack1, delftstack2, Changed]