解释一下 Java 中的 Varargs?

java 8object oriented programmingprogramming更新于 2024/11/15 12:41:00

得益于 Java 的可变参数 (varargs) 功能,方法可以接受可变数量的参数。这对于需要能够管理未知或可变数量输入的方法非常有用。

在 Java 5 中引入 varargs 之前,我们有两种方法来处理需要采用可变数量参数的方法。一种方法是使用重载方法。该方法必须经过多次迭代开发,每次迭代都有不同数量的参数。

如果该过程有许多参数,则可能会变得复杂且难以维护。

Varargs 的语法

在内部,使用一维数组来实现 varargs 方法。这表明 varargs 方法的参数保存在一个数组中,并且可以使用每个参数的索引来访问它。可以使用三个句点 (...) 指定 varargs 参数。

public static void happy(int ... a)
{
// 方法主体
}

使用这种方法,编译器会获知 fun() 可能使用 0-n 个或更多参数进行调用。因此,在这种情况下隐式指定为 int[] 类型的数组。

示例 1

display()

此代码定义了一个名为 VarargsInstance 的类,该类具有一个名为 display 的方法,该方法可以采用可变数量的字符串参数。在主函数中,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();//零参数
 display("my","name","is","tutorialspoint");//四个参数
 }   
}  

输出

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 parameters: "
        + a.length);
        
        // 使用 for each 循环显示 a 的内容
        for (int i : a)
        System.out.print(i + " ");
        System.out.println();
    }
    
    public static void main(String args[])
    {
        // 调用带有不同数量参数的 varargs 方法
        
        happy(250);
        
        // 四个参数
        happy(20, 30, 40, 50);
        
        // 无参数
        happy();
    }
}

输出

参数数量:1
250
参数数量:4
20 30 40 50
参数数量:0

示例 3

display()

在此代码中,有一个名为 VarargsInstance2 的类,其方法 display() 可以接受可变数量的字符串参数。调用该方法时,它会打印"display 方法已调用",然后在单独的行上列出每个提供的参数。在主要部分中,通过使用不同数量的参数调用 display() 方法演示了该方法,生成如图所示的显示输出。

算法

  • 步骤 1:创建一个名为 VarargsInstance2 的类。

  • 步骤 2:定义一个名为 display() 的静态方法。此方法采用可变数量的 String 参数。

  • 步骤 3:在 display() 方法中,执行以下操作:

    • 将以下消息打印到控制台:"display method called"。

    • 使用 for each 循环迭代 values 变量并将数组的内容打印到控制台。

  • 步骤 4:创建 main 方法。

  • 步骤 5:在 main 方法中,执行以下操作:

    • 使用零个参数调用 display() 方法一次。

    • 使用一个参数"hey"再次调用 display() 方法。

    • 使用四个参数"welcome"、"all"、"to"和"Tutorialspoint"。

  • 第 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();//零个参数
    display("hey");//一个参数
    display("welcome","all","to","Tutorialspoint");//四个参数
 }   
}  

输出

display method called 
display method called 
hey
display method called 
welcome
all
to
Tutorialspoint

示例 4

for()

此代码使用接受字符串和灵活数量的整数参数的方法 joy() 定义一个名为 Tutorialspoint 的类。调用该方法时,它会显示给定的字符串、提供的参数数量,然后使用循环列出整数参数。在主要部分中,通过使用字符串和整数的不同组合调用 joy() 方法演示了该方法,并生成如图所示的显示输出。

算法

  • 步骤 1:定义一个名为 joy() 的静态方法。此方法接受一个 String 参数和一个可变数量的 int 参数。

  • 步骤 2:在 joy() 方法中,执行以下操作:

    • 将 thia 打印到控制台:"String: " + str。

    • 将 thia 打印到控制台:"count of parameters is: " + b.length。

    • 使用 for each 循环迭代 b 变量并将数组的内容打印到控制台。

  • 步骤 3:创建 main 方法。

  • 步骤 4:在 main 方法中,执行以下操作:

    • 使用字符串"TLP"和两个整数 250 和 250 调用 joy() 方法一次350.

    • 使用字符串"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);

		// 使用 for each 循环显示
		for (int i : b)
			System.out.print(i + " ");

		System.out.println();
	}

	public static void main(String args[])
	{
		// 使用不同的参数调用 joy()
		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

结论

Vararg 方法可以有意多样化,尽管这种多样化可能会带来不确定性。在 JDK 5 之前的时代,存在两种管理可变长度参数的方法:重载或使用数组参数。重要的是要注意,在方法中,只允许使用单个变量参数。此外,变量参数 (Varargs) 必须保留其作为最终参数的地位。


相关文章