更新時間:2022-12-12 12:44:24 來源:動力節(jié)點 瀏覽1334次
Java 中的可變參數(shù) (Varargs) 是一種采用可變數(shù)量參數(shù)的方法。Java 中的可變參數(shù)簡化了需要采用可變數(shù)量參數(shù)的方法的創(chuàng)建。
在 JDK 4 之前,我們不能聲明一個帶有變量號的方法。的論據(jù)。如果參數(shù)數(shù)量有任何變化,我們必須聲明一個新方法。這種方法增加了代碼的長度并降低了可讀性。
在 JDK 5 之前,可以通過兩種方式處理可變長度參數(shù)。一個使用重載方法(每個方法一個),另一個將參數(shù)放入一個數(shù)組,然后將該數(shù)組傳遞給該方法。它們都可能容易出錯并且需要更多代碼。
為了解決這些問題,JDK 5 中引入了可變參數(shù) (Varargs)。從 JDK 5 開始,我們可以聲明一個參數(shù)數(shù)量可變的方法。這種類型的方法稱為 Varargs 方法。varargs 特性提供了一個更簡單、更好的選擇。
可變參數(shù)的語法
在內(nèi)部,Varargs 方法是通過使用單維數(shù)組概念實現(xiàn)的。因此,在 Varargs 方法中,我們可以通過使用 Index 來區(qū)分參數(shù)。可變長度參數(shù)由三個句點或點 (...) 指定。
例如,
public static void fun(int ... a)
{
// 方法體
}
此語法告訴編譯器可以使用零個或多個參數(shù)調(diào)用 fun()。因此,這里 a 被隱式聲明為 int[] 類型的數(shù)組。
下面是用于說明上述概念的代碼片段:
// Java program to demonstrate varargs
class Test1 {
// A method that takes variable
// number of integer arguments.
static void fun(int... a)
{
System.out.println("Number of arguments: "
+ a.length);
// using for each loop to display contents of a
for (int i : a)
System.out.print(i + " ");
System.out.println();
}
// Driver code
public static void main(String args[])
{
// Calling the varargs method with
// different number of parameters
// one parameter
fun(100);
// four parameters
fun(1, 2, 3, 4);
// no parameter
fun();
}
}
輸出
參數(shù)數(shù)量:1
100
參數(shù)數(shù)量:4
1 2 3 4
參數(shù)數(shù)量:0
上面程序的解釋
… 語法告訴編譯器已經(jīng)使用了可變參數(shù),這些參數(shù)應該存儲在由 a 引用的數(shù)組中。
變量a作為數(shù)組進行操作。在本例中,我們將數(shù)組“a”的數(shù)據(jù)類型定義為 int。所以它只能取整數(shù)值。可以使用 a.length 找出參數(shù)的數(shù)量,這是我們在 Java 中查找數(shù)組長度的方法。
注意:一個方法也可以有可變長度參數(shù)和其他參數(shù),但是應該確保只有一個可變參數(shù)參數(shù)應該寫在方法聲明的參數(shù)列表的最后。例如:
int nums(int a, float b, double ... c)
在這種情況下,前兩個參數(shù)與前兩個參數(shù)匹配,其余參數(shù)屬于c。
// Java program to demonstrate
// varargs with normal arguments
class Test2 {
// Takes string as a argument followed by varargs
static void fun2(String str, int... a)
{
System.out.println("String: " + str);
System.out.println("Number of arguments is: "
+ a.length);
// using for each loop to display contents of a
for (int i : a)
System.out.print(i + " ");
System.out.println();
}
public static void main(String args[])
{
// Calling fun2() with different parameter
fun2("GeeksforGeeks", 100, 200);
fun2("CSPortal", 1, 2, 3, 4, 5);
fun2("forGeeks");
}
}
輸出
字符串:GeeksforGeeks
參數(shù)數(shù)量為:2
100 200
字符串:CSPortal
參數(shù)數(shù)量為:5
1 2 3 4 5
字符串:forGeeks
參數(shù)個數(shù)為:0