程序入口点 - 字符串之间有什么区别吗?Java 中的 args 和 String[] args



Java中的String... argsString[] args有什么区别?

我是Java编程的新手。谁能告诉我(String....args)和(String [] args)之间有什么区别,如果我用第一个代替第二个......有什么区别吗?

String... args将声明一个需要可变数量的 String 参数的方法。参数的数量可以是任何内容:包括零。

String[] args和等效的String args[]将声明一个只需要一个参数的方法:字符串数组。

从这些观察中可能不会得出的一个区别是,在第二种情况下(但不是第一种情况),调用方可能具有对数组的引用。在这两种情况下,该方法都将 args 作为字符串数组使用,但如果它执行诸如交换数组元素之类的操作,则如果使用 String... args 形式,则调用者将看不到此操作。

如果你有void x(String...args)方法,你可以按x("1", "2", "3")调用它,而void x(String[] args)只能作为x(new String[] {"1", "2", "3"})调用。

没有区别。String... args是允许的。

JLS-12.1.4. 调用Test.main说(部分)

main 方法必须声明为 publicstaticvoid。它必须指定一个形式参数 (§8.4.1),其声明的类型是 String 数组。因此,以下任一声明都是可以接受的:

public static void main(String[] args)

public static void main(String... args)

未明确列出(但也允许)

public static void main(String args[])

主要方法中几乎没有区别,它们都将以相同的方式工作。

字符串...被称为varargs。varargs 的优点是它是非常好的语法糖,它允许您无限期地定义方法调用的参数。在方法的主体中,varargs 完全被视为该类型的数组。

varargs 的缺点是 Java 会将不定参数转换为新数组,从而产生垃圾。作为替代方法,如果垃圾创建必须为零,则可以使用方法重载来模拟 varargs。

相关内容

  • 没有找到相关文章

最新更新