main(String ... s)和main(String [] s)之间有什么区别?

时间:2011-08-05 07:21:25

标签: java

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是否有特殊需要具有可变长度参数?

4 个答案:

答案 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中引入。