class Test{
public static void main(String... s){
System.out.println("Hello");
}
}
class Test{
public static void main(String[] s){
System.out.println("Hello");
}
}
main()
声明的上述两种语法有什么区别?
Java是否有特殊需要具有可变长度参数?
答案 0 :(得分:6)
没有区别(当您从命令行运行程序时,即主要方法用于什么)。第一个变体出现在Java 5引入varargs之后。
简而言之,varargs允许您将可变数量的参数传递给方法。对于方法体,参数被分组为一个数组。与Test.main("foo", "bar")
代替Test.main(new String[] {"foo", "bar"})
一样。编译器会在场景后面为您创建数组。
答案 1 :(得分:6)
唯一的区别是你直接从其他Java代码调用main
。第一种形式允许你写:
Test.main("first", "second", "third");
而第二个要求你明确地创建一个数组:
Test.main(new String[] { "first", "second", "third" });
就我个人而言,我认为我从未见过第一种形式 - 从其他代码调用main
非常罕见。但它没有错误。
答案 2 :(得分:3)
没有区别。
通常,String... s
允许使用逗号作为分隔符传递参数,而String[] s
则需要数组。
但在实现s
中,两种情况都是数组。所以...
在某种意义上就是辛辣糖。
答案 3 :(得分:0)
可变数量的参数main(String... s)
仅在Java 5.0中引入。