Varargs,数组和参数列表

时间:2014-03-12 06:37:14

标签: java arrays variadic-functions

我搜索了论坛,但我仍然无法理解以下差异:

    1) void sum(5,5,5,6,7,8,9,3,5,3,2,3,6){}
    2) void sum(int[] i){}
    3) void sum(int... i){}

如果3)可以被视为数组那么1)?

2 个答案:

答案 0 :(得分:1)

void sum(5,5,5,6,7,8,9,3,5,3,2,3,6){}甚至不会编译,因为它不是有效的方法声明

  

括号中的方法参数列表应该是逗号分隔的输入参数列表,前面是数据类型,括在括号内。

2& 3基本上是相同的,除非您将调用方法sum(5,5,5);它将不会解析为方法void sum(int[] a ){},因为此方法期望int array作为calle方法参数,而{{1因为它在方法调用中期望可变数量的void sum(int... a){}类型参数,所以会正常工作。

答案 1 :(得分:0)

2和3基本相同。 3更优雅,因为你不必在调用方法之前创建数组。 Java为你做到了。

如果参数的数量永远不会改变,

1就很有用。