0

在java中,我们可以将main()方法定义为这两种方式。

public static void main(String[] args) {          
    System.out.println("Hello World");
}

.

public static void main(String... args) {          
    System.out.println("Hello World");
}

这两种方法都需要array参数String。现在考虑以下情况。

    String[] arr=new String[10]; // valid
    String... arr=new String[10];// invalid 

Java绝不允许以这种方式创建数组String... arr=new String[10];。但在上述方法实现中java允许这样做。我的问题是如何java在两种情况下实现这两种不同的行为?

4

4 回答 4

4
... 

是方法参数的语法,而不是变量定义的语法。这种表示法的名称是varargs,它是自我解释的,即可变数量的参数。

于 2013-08-13T16:59:46.840 回答
1

Java 中的变量参数或 varargs(...)用于编写更灵活的方法,这些方法可以接受尽可能多的参数来进行初始化。

于 2013-08-13T17:02:39.697 回答
1

...可变参数,其主要目的是使方法更具可读性

void method(String... args) {

}

可以称为

method("a");method("a", "b");method("a", "b", "c");

我认为在变量声明中使用它没有意义,我们无能为力

String... a = {"a", "b"}

无论如何都可以使用动态大小声明数组

String[] arr = {"a"};

或者

String[] arr = {"a", "b"};
于 2013-08-13T17:03:39.060 回答
0

您可以使用 varargs inmain因为使用 varargs (...) 声明的方法与使用数组参数的方法声明的字节码兼容(为了向后兼容)。这并不意味着类型声明允许使用相同的语法。

于 2013-08-13T17:03:03.917 回答