Java中String... args
和String[] args
之间有什么区别?
我是Java编程的新手。
任何人都可以告诉我(String....args
)&的区别是什么? (String [] args
)如果我使用第一个代替第二个........它有什么不同吗?
String... args
将声明一个需要可变数量的String参数的方法。参数的数量可以是任何值:包括零。
String[] args
和等效的String args[]
将声明一个只需要一个参数的方法:一个字符串数组。
可能不会从这些观察结果中产生的一个区别是,在第二种情况下(但不是第一种情况),调用者可能会引用该数组。在这两种情况下,该方法都使用args作为字符串数组,但如果它执行交换数组元素之类的操作,则如果使用String... args
形式,则调用者将无法看到它。
答案 0 :(得分:15)
如果您使用void x(String...args)
方法,则可以将其称为x("1", "2", "3")
,而void x(String[] args)
只能被称为x(new String[] {"1", "2", "3"})
。
答案 1 :(得分:6)
没有区别。并且允许String... args
。
JLS-12.1.4. Invoke Test.main
说(部分)
方法main必须声明为
public
,static
和void
。它必须指定一个形式参数(§8.4.1),其声明类型为String
数组。因此,可以接受以下任一声明:public static void main(String[] args) public static void main(String... args)
未明确列出(但也允许)
public static void main(String args[])
答案 2 :(得分:1)
在 main 方法中,差异很小,它们的工作方式都相同。
String ... 称为varargs。 varargs的优点是它是非常好的语法糖,它允许您无限期地定义方法调用的参数。在方法体中,varargs被完全视为该类型的数组。
varargs的缺点是Java会将不确定的参数转换为新数组,从而产生垃圾。作为替代方法,如果垃圾创建必须为零,则可以使用方法重载来模拟varargs。