使用“String ...”时的参数顺序

时间:2017-05-19 08:28:47

标签: java

我正在编写一个带有可变数量参数的方法,使用Java提出的构造函数:

public static boolean myMethod(String... strings)   {
    for (String s: strings)    {
         // Applying some logic / treatment on strings
    }
}

我想知道:Java如何使用strings参数进行操作?它需要ArrayList还是简单的String[]?通过方法时是否保留了参数的顺序?

例如,如果我使用我的方法:

MyMethodUtils.myMethod(first, second, third, fourth, fifth);

我保证first会先被处理,然后会被second等等......或者不会?

加分问题:此类构造函数String...特定名称是什么?(在Java中)?

3 个答案:

答案 0 :(得分:4)

是的,保留了订购。

这是因为String...(技术上称为variable arity parameter,但通常非正式地称为“varargs”)只是String[]的语法糖。所以:

MyMethodUtils.myMethod(first, second, third, fourth, fifth);

相同
MyMethodUtils.myMethod(new String[]{first, second, third, fourth, fifth});

(事实上,你可以调用后者)。

您不希望数组的元素在任何其他情况下更改顺序,也不会使用变量arity参数。

您可以在JLS Sec 15.12.4.2中找到:

  

如果使用m实际参数表达式调用k ≠ n,或者使用m实际参数表达式和{{1}的类型调用k = n第二个参数表达式与k的赋值不兼容,然后对参数列表T[]进行求值,好像它被写为(e1, ..., en-1, en, ..., ek),其中(e1, ..., en-1, new |T[]| { en, ..., ek })表示擦除( |T[]|的§4.6)。

答案 1 :(得分:0)

  

奖金问题:这种构造函数的具体名称是什么   String ...(在Java中)?

这些类型的构造函数的名称仅是参数化构造函数。

唯一的区别是这些是使用Varargs。

变量参数(Varargs):

  

varrags允许该方法接受零个或多个参数。   在varargs之前,我们要么使用重载方法,要么采用数组作为   方法参数,但它不被认为是好的,因为它导致   维修问题。如果我们不知道我们会有多少论点   必须传递方法,var args是更好的方法。

For More information

答案 2 :(得分:0)

您将按照您编写的顺序获取这些参数,请参阅上面的示例,我可以说,

首先是第一个,第二个是第二个

Java将其作为字符串[]

回答奖金问题

没有特定的名称,但您以这种方式传递的参数称为" var args"

希望你满意:)