(String… args) vs (String[] args)

来源:互联网 发布:arm数组累加 编辑:程序博客网 时间:2024/05/29 02:12

The only difference between the two is the way you call the function. With String var args you can omit the array creation.

public static void main(String[] args) {    callMe1(new String[] {"a", "b", "c"});    callMe2("a", "b", "c");    // You can also do this    // callMe2(new String[] {"a", "b", "c"});}public static void callMe1(String[] args) {    System.out.println(args.getClass() == String[].class);    for (String s : args) {        System.out.println(s);    }}public static void callMe2(String... args) {    System.out.println(args.getClass() == String[].class);    for (String s : args) {        System.out.println(s);    }}

The difference is only when invoking the method. The second form must be invoked with an array, the first form can be invoked with an array (just like the second one, yes, this is valid according to Java standard) or with a list of strings (multiple strings separated by comma) or with no arguments at all (the second one always must have one, at least null must be passed).

It is syntactically sugar. Actually the compiler turns
function(s1, s2, s3);
into
function(new String[] { s1, s2, s3 });
internally.

0 0
原创粉丝点击