在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
如何在两种情况下实现这两种不同的行为?
答案 0 :(得分:4)
...
是方法参数的语法,而不是变量定义的语法。这种表示法的名称是varargs,它是自解释的,即可变数量的参数。
答案 1 :(得分:1)
Variable argument or varargs(...) 用于编写更灵活的方法,可以接受尽可能多的参数而不需要进行初始化。
答案 2 :(得分:1)
...
指的是 varargs ,其主要目的是使方法更具可读性。
void method(String... args) {
}
可以称为
method("a");
或method("a", "b");
或method("a", "b", "c");
我认为在变量声明中使用它没有意义,我们用
做不了多少String... a = {"a", "b"}
无论如何,数组都可以用动态大小声明
String[] arr = {"a"};
OR
String[] arr = {"a", "b"};
答案 3 :(得分:0)
您可以在main
中使用varargs,因为使用varargs(...)声明的方法与带有数组参数的方法声明(为了向后兼容)兼容。这并不意味着类型声明允许使用相同的语法。