Java中的变量参数(Varargs)

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
喜欢就支持一下吧
点赞10 分享