在方法参数中,...的含义是什么?它是[]的替代品吗?

时间:2015-04-27 21:55:36

标签: java arrays

我正在查看java代码并看到了使用 ...我认为它是[]

的替代品

以下是使用...的示例:

public StudentData(String firstName,String lastName,double ... list)
   {
       // initialise instance variables
       this.firstName = firstName;
       this.lastName = lastName;
       this.testScores = testScores;
       this.grade = grade;
       grade = courseGrade(list); //calc 
    }

以下是没有它的示例:

public StudentData(String firstName,String lastName,double [] list)
   {
       // initialise instance variables
       this.firstName = firstName;
       this.lastName = lastName;
       this.testScores = testScores;
       this.grade = grade;
       grade = courseGrade(list); //calc 
    }

我尝试在我的代码中使用它,它解决了我之前遗留下来的一些错误消息。您能否解释一下...[]

的功能

3 个答案:

答案 0 :(得分:1)

由于Java5我们有一个名为变量参数的新功能,它有助于发送n个相同类型的参数,但是catch应该始终位于参数列表的末尾。如果您想了解更多信息,可以查看有关varargs的文档。

答案 1 :(得分:1)

之间的唯一区别

public StudentData(String firstName,String lastName,double ... list)

public StudentData(String firstName,String lastName,double [] list)

是后者,调用者必须实例化一个数组并将其作为参数提供。在前者中,参数自动放入数组中。这称为varargs

答案 2 :(得分:0)

这些被称为" varargs"。它基本上是数组[]的替代,允许您将任意数量的参数传递给方法,这些参数会自动转换为指定类型的数组。

请参阅以下示例:

import java.util.Arrays;

public class Varargs {

    public static void main(String[] args) {
        foo();
        bar(new String[0]);
        foo("foo");
        bar(new String[] { "foo" });
        foo("foo", "bar");
        bar(new String[] { "foo", "bar" });
    }

    public static void foo(String... strings) {
        System.out.println(Arrays.toString(strings));
    }

    public static void bar(String[] strings) {
        System.out.println(Arrays.toString(strings));
    }
}

输出:

[]
[]
[foo]
[foo]
[foo, bar]
[foo, bar]