Java中的Varargs詳解?
Java 的一個特性叫做可變引數 (varargs),它允許方法接受可變數量的引數。這對於需要處理未知或可變數量輸入的方法非常有用。
在 Java 5 引入 varargs 之前,我們有兩種方法來處理需要可變數量引數的方法。一種方法是使用過載方法。方法必須開發多個版本,每個版本都有不同數量的引數。
如果引數很多,這可能會變得複雜且難以維護。
Varargs 語法
在內部,varargs 方法使用一維陣列來實現。這意味著 varargs 方法的引數儲存在一個數組中,可以使用每個引數的索引來訪問它。可以使用三個點或省略號 (...) 來指定 varargs 引數。
public static void happy(int ... a)
{
// method body
}
使用這種方法,編譯器知道 fun() 可以用 0 到 n 個或更多引數呼叫。因此,在這種情況下,隱式指定為 int[] 型別的陣列。
示例 1
display()
這段程式碼定義了一個名為 VarargsInstance 的類,其中包含一個名為 display 的方法,該方法可以接受可變數量的字串引數。在 main 函式中,display 方法被呼叫了兩次——一次不帶任何引數,一次帶四個字串引數。呼叫該方法時,它會列印一條訊息。
演算法
步驟 1:建立一個名為 VarargsInstance 的類。
步驟 2:定義一個名為 display() 的靜態方法。此方法接受可變數量的 String 引數。
步驟 3:在 display() 方法內部,將以下訊息列印到控制檯:“已呼叫 display 方法”。
步驟 4:建立一個 main 方法。
步驟 5:在 main 方法中,使用零個引數呼叫 display() 方法一次。
步驟 6:使用四個引數再次呼叫 display() 方法。
步驟 7:執行程式。
示例
public class VarargsInstance{
public static void display(String... values){
System.out.println("The display method has been called ");
}
public static void main(String args[]){
display();//zero argument
display("my","name","is","tutorialspoint");//four arguments
}
}
輸出
The display method has been called The display method has been called
示例 2
happy()
這段程式碼定義了一個名為 Example1 的類,其中包含一個名為 happy() 的方法,該方法可以接受靈活數量的整數引數。在這個方法內部,它顯示引數的數量並使用迴圈列出引數。在主程式中,它演示了使用不同數量的引數呼叫 happy() 方法,生成的輸出顯示了提供的引數的數量和值。
演算法
步驟 1:建立一個名為 Example1 的類。
步驟 2:定義一個名為 happy() 的靜態方法。此方法接受可變數量的 int 引數。
步驟 3:在 happy() 方法內部執行以下操作
將此列印到控制檯:“引數數量:” + a.length。
透過 for each 迴圈迭代 a 變數,將陣列的內容列印到控制檯。
步驟 4:建立一個 main 方法。
步驟 5:在 main 方法中執行以下操作
使用一個引數 250 呼叫 happy() 方法一次。
使用四個引數 20、30、40 和 50 再次呼叫 happy() 方法。
使用零個引數再次呼叫 happy() 方法。
步驟 6:執行程式。
示例
public class Example1 {
static void happy(int... a)
{
System.out.println("Count of arguments: "
+ a.length);
// employing 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 the varargs method with various number of parameters
happy(250);
// four parameters
happy(20, 30, 40, 50);
// no parameter
happy();
}
}
輸出
Count of arguments: 1 250 Count of arguments: 4 20 30 40 50 Count of arguments: 0
示例 3
display()
在此程式碼中,有一個名為 VarargsInstance2 的類,其中包含一個名為 display() 的方法,該方法可以接受可變數量的字串引數。呼叫該方法時,它會列印“已呼叫 display 方法”,然後在單獨的行上列出每個提供的引數。在主程式中,透過使用不同數量的引數呼叫 display() 方法來演示 display() 方法,生成顯示的輸出。
演算法
步驟 1:建立一個名為 VarargsInstance2 的類。
步驟 2:定義一個名為 display() 的靜態方法。此方法接受可變數量的 String 引數。
步驟 3:在 display() 方法內部執行以下操作
將以下訊息列印到控制檯:“已呼叫 display 方法”。
使用 for each 迴圈遍歷 values 變數並將陣列的內容列印到控制檯。
步驟 4:建立一個 main 方法。
步驟 5:在 main 方法中執行以下操作
使用零個引數呼叫 display() 方法一次。
使用一個引數“hey”再次呼叫 display() 方法。
使用四個引數“welcome”、“all”、“to”和“Tutorialspoint”再次呼叫 display() 方法。
步驟 6:執行程式
示例
public class VarargsInstance2{
static void display(String... values){
System.out.println("display method called ");
for(String s:values){
System.out.println(s);
}
}
public static void main(String args[]){
display();//zero argument
display("hey");//one argument
display("welcome","all","to","Tutorialspoint");//four arguments
}
}
輸出
display method called display method called hey display method called welcome all to Tutorialspoint
示例 4
for()
這段程式碼定義了一個名為 Tutorialspoint 的類,其中包含一個名為 joy() 的方法,該方法接受一個字串和靈活數量的整數引數。呼叫該方法時,它會顯示給定的字串、提供的引數的數量,然後使用迴圈列出整數引數。在主程式中,透過使用字串和整數的不同組合呼叫 joy() 方法來演示 joy() 方法,生成顯示的輸出。
演算法
步驟 1:定義一個名為 joy() 的靜態方法。此方法接受一個 String 引數和可變數量的 int 引數。
步驟 2:在 joy() 方法內部執行以下操作
將此列印到控制檯:“字串:” + str。
將此列印到控制檯:“引數數量為:” + b.length。
使用 for each 迴圈遍歷 b 變數並將陣列的內容列印到控制檯。
步驟 3:建立一個 main 方法。
步驟 4:在 main 方法中執行以下操作
使用字串“TLP”和兩個整數 250 和 350 呼叫 joy() 方法一次。
使用字串“Example”和五個整數 20、30、40、50 和 60 再次呼叫 joy() 方法。
使用字串“for students”和無整數再次呼叫 joy() 方法。
步驟 5:執行程式。
示例
public class Tutorialspoint{
static void joy(String str, int... b)
{
System.out.println("String: " + str);
System.out.println("count of arguments is: "
+ b.length);
// employing for each loop to display contents of a
for (int i : b)
System.out.print(i + " ");
System.out.println();
}
public static void main(String args[])
{
// Calling joy() with different parameter
joy("TLP", 250, 350);
joy("Example", 20, 30, 40, 50, 60);
joy("for students");
}
}
輸出
String: TLP count of arguments is: 2 250 350 String: Example count of arguments is: 5 20 30 40 50 60 String: for students count of arguments is: 0
結論
Varargs 方法可以故意多樣化,儘管這種多樣化可能會引入不確定性。在 JDK 5 之前的時代,存在兩種管理可變長度引數的方法:過載或使用陣列引數。需要注意的是,在一個方法中,只允許一個可變引數。此外,可變引數 (Varargs) 必須位於最後一個引數。
資料結構
網路
關係資料庫管理系統(RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP