Java中的Variable Arguments(Varargs)是一种接受可变数量参数的方法。Java中的变量参数简化了需要采用可变数量参数的方法的创建。
null
Java Varargs的需求
- 在JDK 4之前,我们不能声明一个参数数量可变的方法。如果参数的数量有任何变化,我们必须声明一个新方法。这种方法增加了代码的长度,降低了可读性。
- 在JDK 5之前,可变长度参数可以通过两种方式处理。一个使用重载方法(每个方法一个),另一个将参数放入数组,然后将该数组传递给该方法。它们都可能容易出错,需要更多的代码。
- 为了解决这些问题,JDK 5中引入了变量参数(Varargs)。从JDK 5开始,我们可以声明一个参数数量可变的方法。这种类型的方法称为Varargs方法。varargs功能提供了一个更简单、更好的选择。
Varargs的语法
在内部,Varargs方法是通过使用一维数组概念实现的。因此,在Varrags方法中,我们可以使用索引来区分参数。可变长度参数由三个句点或点(…)指定。
例如
public static void fun(int ... a) { // method body}
这个语法告诉编译器fun()可以用零个或多个参数调用。因此,在这里,a被隐式声明为int[]类型的数组。
下面是用于说明上述概念的代码片段:
JAVA
// 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(); } } |
输出
Number of arguments: 1100 Number of arguments: 41 2 3 4 Number of arguments: 0
解释 以上程序
- 语法告诉编译器已经使用了varargs,这些参数应该存储在 数组引用的数组 .
- 变量 A. 作为一个阵列进行操作。在本例中,我们将数组“a”的数据类型定义为int。因此它只能接受整数值。参数的数量可以使用a.length来计算,这是我们在Java中计算数组长度的方法。
注: 一个方法也可以有可变长度的参数和其他参数,但应该确保只有一个varargs参数应该在方法声明的参数列表中最后写入。例如:
int nums(int a, float b, double … c)
在本例中,前两个参数与前两个参数匹配,其余参数属于c。
JAVA
// 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" ); } } |
输出
String: GeeksforGeeksNumber of arguments is: 2100 200 String: CSPortalNumber of arguments is: 51 2 3 4 5 String: forGeeksNumber of arguments is: 0
错误的Varargs示例
案例1: 在一个方法中指定两个vararg:
void method(String... gfg, int... q){ // Compile time error as there // are two varargs}
案例2: 将Varargs指定为方法的第一个参数,而不是最后一个参数:
void method(int... gfg, String q){ // Compile time error as vararg // appear before normal argument}
关于Varargs的要点
- Vararg方法也可以重载,但重载可能会导致歧义。
- 在JDK 5之前,可变长度参数可以通过两种方式处理:一种是使用重载,另一种是使用数组参数。
- 一个方法中只能有一个变量参数。
- 变量参数(Varargs)必须是最后一个参数。
本文由 尼拉杰·斯利马尔 .如果你喜欢GeekSforgek,并且想贡献自己的力量,你也可以在上面写一篇文章 写极客。组织 .查看你在GeekSforgeks主页上的文章,并帮助其他极客。如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写评论
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END