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