首頁  >  文章  >  Java  >  Java 中的可變參數函數

Java 中的可變參數函數

Barbara Streisand
Barbara Streisand原創
2024-11-20 01:00:03721瀏覽

Funciones variádicas en Java

可變參數函數是一種接受不定數量參數的函數。

讓我們看看 Java 中這些函數的原因是什麼。假設我們有一個求和方法,它接收兩個整數並傳回兩者的總和。

public static int summation(int a, int b) {
    return a + b;
}

如果我們想要將三個數字相加,我們必須重載求和方法以接受三個參數。

public static int summation(int a, int b, int c) {
    return a + b + c;
}

如果我們想將四個數字相加會發生什麼事?同樣,求和方法必須重載。

public static int summation(int a, int b, int c, int d) {
    return a + b + c + d;
}

正如我們所見,這是不可擴展的,因為每次需要不同數量的參數時,方法都必須再次重載。此時,您可以考慮傳遞一個整數數組作為參數,但這只不過是包裝實際參數並使該方法現在明確依賴於新的資料類型。

對於這些情況,存在可變參數函數,可以接受無限數量的參數,而不需要將它們包裝在另一種類型的可見結構中。重要的是要考慮到 Java 在內部所做的是使用傳遞給可變參數函數的參數來建立數組,因此我們可以使用數組的方法。

可變參數函數的宣告方式與任何普通函數相同,但作為參數,它的最後一個或唯一的參數必須符合以下格式:資料類型...變數名稱。在聲明方式中,唯一改變的是在資料類型後面增加了三個點...。在某些語言中,這種類型的參數稱為 varargs。讓我們看看求和方法如何像可變參數函數。

public static int summation(int... numbers) {
    int sum = 0;

    for (int number : numbers) {
        sum += number;
    }

    return sum;
}

現在我們可以添加任意數量的數字,而無需重載求和方法,唯一的限制是它們必須具有相同的資料類型。

System.out.println(summation(1, 2)); // 3
System.out.println(summation(1, 2, 3)); // 6
System.out.println(summation(1, 2, 3, 4)); // 10
System.out.println(summation(2, 8, 16, 32, 64, 128, 256, 512, 1024, 2048)); // 4090

之前提到過,Java 在內部將可變參數函數的參數作為數組處理,即將它們包裝在數組中,這允許我們使用數組的方法。例如,您可以使用 Arrays 類別的 sum 方法在求和方法中將陣列的所有元素相加。

public static int summation(int... numbers) {
    return Arrays.stream(numbers).sum();
}

考慮到上述情況,可變參數函數也可以作為參數傳遞它接受的資料類型的數組,無論它看起來多麼奇怪。這樣,Java 不再需要將參數包裝在陣列中,因為陣列是直接作為參數傳遞的。

public static int summation(int a, int b) {
    return a + b;
}

但是,如果求和方法由於某種原因需要 double 類型的第二個參數,除了聲明為可變參數函數時已經可以接收的 n 個整數,會發生什麼情況。在這種情況下,必須使用所需的附加參數來聲明求和方法,並在末尾添加可變參數或 varargs,如下所示。

public static int summation(int a, int b, int c) {
    return a + b + c;
}

透過這種方式,你可以傳遞一個double 數字作為第一個參數,以及你想要添加的整數作為附加參數,Java 會自動知道第一個參數是double 類型,後面的參數是int 類型,考慮一下參數variadic 應該始終是函數的最後一個參數,而不是第一個參數,因為它會產生編譯錯誤,甚至IDE 本身也會告訴我們以下內容:varargs 參數必須是最後一個參數。

public static int summation(int a, int b, int c, int d) {
    return a + b + c + d;
}

總之,如果需要某個實用函數來執行某種類型的具有不定數量參數的操作,並且我們不想明確傳遞數組或列表,則可以考慮使用可變參數函數。這些很有用,它們使程式碼更乾淨、更具可擴展性,並且避免方法重載。

以上是Java 中的可變參數函數的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn