解释一下Java中的Varargs吗?

解释一下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,可以接受可变数量的字符串参数。在主函数中,display方法被调用了两次 – 一次没有任何参数,一次带有四个字符串参数。当调用时,该方法会打印出该消息。

算法

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

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

  • 步骤3:在display()方法内部,将以下消息打印到控制台:”The display method has been called”。

  • 步骤4:创建一个主方法。

  • 步骤5:在主方法中,使用零个参数调用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()的静态方法。该方法接受可变数量的整数参数。

  • 步骤3:在happy()方法内部,执行以下操作:

    • 将以下文本打印到控制台:”Count of arguments: ” + 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 method called”,然后在单独的行上列出每个提供的参数。在主要部分中,通过使用不同数量的参数来调用display()方法来演示,生成显示的输出如下所示。

算法

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

  • 步骤2:定义一个名为display()的静态方法。该方法接受可变数量的字符串参数。

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

    • 在控制台打印以下消息:”display method called”。

    • 使用for each循环遍历值变量,并将数组的内容打印到控制台。

  • 步骤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()

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

算法

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

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

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

    • 将”count of arguments is: ” + 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

结论

可变参数方法可以有意地多样化,尽管这种多样化可能会引入不确定性。在JDK 5之前的时代,有两种方法来处理可变长度的参数:重载或利用数组参数。需要注意的是,在方法内部,只允许有一个可变参数。此外,变量参数(Varargs)必须保持其作为最后一个参数的位置。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程