Java 中將陣列傳遞給方法

Mohammad Irfan 2023年10月12日
  1. Java 中的陣列
  2. Java 中的方法
  3. 在 Java 中將陣列傳遞給方法
  4. 將陣列傳遞給 Java 中的方法
  5. 將多維陣列傳遞給 Java 中的方法
  6. 瞭解陣列如何傳遞給 Java 中的方法
  7. 將陣列傳遞給 Java 中的方法
Java 中將陣列傳遞給方法

本教程介紹如何將陣列傳遞給 Java 中的方法。我們還列出了一些示例程式碼以幫助你理解該主題。

Java 是一種強大的物件導向的程式語言;它是一種通用程式語言,可用於各種目的。讓我們學習 Java 中的陣列和方法,並瞭解如何將陣列傳遞給方法。

Java 中的陣列

陣列是相同資料型別的固定大小的集合。它們作為連續塊儲存在記憶體中,它使我們能夠在恆定時間隨機訪問陣列的任何元素。

這種隨機訪問是可能的,因為陣列中的每個元素都有一個與之關聯的專用索引。我們不必遍歷整個陣列來到達特定元素。陣列索引從 0 開始到 n-1,其中 n 是陣列的長度。

以下程式碼行解釋瞭如何建立陣列並訪問其元素。

public class Main {
  public static void main(String[] args) {
    int[] arr; // Declaration
    arr = new int[5]; // Creation
    // Initialization
    arr[0] = 1;
    arr[1] = 3;
    arr[2] = 5;
    arr[3] = 7;
    arr[4] = 9;
    // Accessing Array Elements
    System.out.println("Second Element: " + arr[1]);
    System.out.println("Fourth Element: " + arr[3]);
  }
}

輸出:

Second Element: 3
Fourth Element: 7

Java 中的方法

方法被定義為一組可用於完成特定任務的指令。它們用於增加我們程式碼的可重用性。

例如,如果我們想找到 110 之間所有數字的階乘,最好為 factorial 定義一個方法並首先呼叫該方法 10 次,而不是重寫階乘 10 的整個邏輯不同的時間。

Java 中的方法與其他程式語言中的函式非常相似。唯一的區別是方法與物件相關聯,而函式則沒有。由於 Java 是一種完全物件導向的語言,因此我們只有 Java 中的方法。

在 Java 中將陣列傳遞給方法

一個方法可能會也可能不會接受一組固定的引數。引數可以是我們需要用來定義方法體的任何變數。

在階乘方法的示例中,引數可以是我們需要找到其階乘的數字。但是如果我們需要將整個陣列傳遞給一個方法呢?

在方法宣告中,我們需要告訴 Java,該方法必須接受某個資料型別的陣列才能將陣列傳遞給方法。使用陣列的資料型別和方括號表示引數為陣列。

// Method Declaration
public static void addTen(int[] arr) {
  // Method Body
}

每當呼叫該方法時,我們都需要將陣列的名稱傳遞給該方法。下面的示例顯示了一個完整的程式碼,其中包含一個接受陣列並呼叫該方法的方法。

public class Main {
  public static void addTen(int[] arr) // int[] denotes that the parameter is an array
  {
    for (int i = 0; i < arr.length; i++) {
      arr[i] += 10;
    }
  }
  public static void main(String[] args) {
    int[] arr = {1, 3, 5, 7, 9};
    addTen(arr); // Simply pass the name of the array to the method
    for (int i = 0; i < arr.length; i++) {
      System.out.print(arr[i] + " ");
    }
  }
}

輸出:

11 13 15 17 19 

將陣列傳遞給 Java 中的方法

考慮另一個例子,我們將兩個相同長度的陣列傳遞給一個方法。該方法應該列印兩個陣列的總和。

public class Main {
  public static void addArrays(
      int[] arr1, int[] arr2) // Two arrays are mentioned in the method declaration
  {
    for (int i = 0; i < arr1.length; i++) {
      int sum = arr1[i] + arr2[i];
      System.out.print(sum + " ");
    }
  }
  public static void main(String[] args) {
    int[] arr1 = {1, 2, 3, 4, 5};
    int[] arr2 = {2, 4, 6, 8, 10};
    addArrays(arr1, arr2); // Passing two arrays and calling the method
  }
}

輸出:

3 6 9 12 15

將多維陣列傳遞給 Java 中的方法

我們還可以將多維陣列傳遞給 Java 中的方法。我們需要根據陣列的維數來指定陣列元素和方括號的資料型別。

考慮以下示例,其中我們找到二維陣列中存在的所有元素的總和。

public class Main {
  public static void sum(int[][] arr) {
    int sum = 0;
    for (int i = 0; i < arr.length; i++) {
      for (int j = 0; j < arr[0].length; j++) {
        sum = sum + arr[i][j];
      }
    }
    System.out.print("Sum of all elements is: " + sum);
  }
  public static void main(String[] args) {
    int[][] arr = {{1, 2, 3, 4, 5}, {2, 4, 6, 8, 10}, {1, 3, 5, 7, 9}};
    sum(arr);
  }
}

輸出:

Sum of all elements is: 70

瞭解陣列如何傳遞給 Java 中的方法

讓我們看一下並嘗試瞭解當我們將引數傳遞給方法時在幕後發生了什麼。

在 Java 中,引數是一種按值傳遞型別。這意味著每當我們將一個變數傳遞給一個方法時,該變數的值的副本是由該方法使用的內容而不是原始變數本身傳遞的。

例如,讓我們考慮以下情況,其中一個方法接受一個整數並將 10 新增到該整數上。

public class Main {
  public static void addTen(int num) {
    num = num + 10;
  }
  public static void main(String[] args) {
    int a = 12;
    addTen(a);
    System.out.print(a);
  }
}

輸出:

12

你認為上面程式碼的輸出會是什麼?數字的值應該增加 10,對嗎?

發生的情況是,即使將整數傳遞給該方法,該方法實際接收到的是該整數值的副本。因此,所有更改都對該副本進行了更改,而原始整數沒有更改。然而,這隻發生在像 int 這樣的原始資料型別。

陣列不是這種情況,因為陣列不是原始資料型別,而是被視為引用堆記憶體中記憶體位置的容器物件。因此,它們儲存的是記憶體位置的值而不是實際資料。

每當我們更改該記憶體位置中的某些內容時,該更改將對指向該記憶體位置的所有指標(或引用)可見。請記住,在 Java 中陣列也是按值傳遞的,但該值實際上是一個記憶體位置。

考慮上面提到的程式碼,我們建立了一個方法來將 10 新增到陣列的每個元素。

將陣列傳遞給 Java 中的方法

我們經常需要將一組相同型別的資料傳遞給一個方法。陣列最適合這些任務,我們可以將陣列傳遞給方法。

在方法宣告中,我們需要明確指定該方法應該接受上述資料型別的陣列;這是使用資料型別和方括號(例如,int[] arrayName)完成的。

在呼叫方法時,我們可以輸入陣列的名稱。在本教程中,我們還學習了方法如何處理陣列以及如何更新儲存陣列元素的記憶體位置。

相關文章 - Java Array

相關文章 - Java Method