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) 必須位於最後一個引數。

更新於:2023年8月29日

360 次檢視

開啟您的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.