java中的字符串args[]是否实现为varargs?

java中的字符串args[]是否实现为varargs?,java,main,variadic-functions,args,Java,Main,Variadic Functions,Args,如何实现publicstaticvoidmain(stringargs[])的stringargs[]?它是否实现为varargs 我这样问是因为args.length只给出传递的参数数量,这意味着它没有像String args[]=new String[30]那样定义。这个数组是如何实现的?它只是一个字符串数组,在启动时用传递给进程的参数值初始化。它不是一个变量参数列表。它的实现方式与它的外观完全相同——是一个字符串数组。另一方面,Varargs被实现为一个数组–String…只是String

如何实现
publicstaticvoidmain(stringargs[])
stringargs[]
?它是否实现为
varargs


我这样问是因为
args.length
只给出传递的参数数量,这意味着它没有像
String args[]=new String[30]
那样定义。这个数组是如何实现的?

它只是一个字符串数组,在启动时用传递给进程的参数值初始化。它不是一个变量参数列表。

它的实现方式与它的外观完全相同——是一个字符串数组。另一方面,Varargs被实现为一个数组–
String…
只是
String[]
的语法糖,它被声明(未实现),而您说它是被声明的。使用varargs声明函数是完全合法的:

public static void main(String... argv)
编译器接受varargs声明并将其转换为字节码中的
String[]
。所有使用varargs的函数都会发生这种情况


当JVM开始运行您的程序时,它会创建一个数组,该数组的长度正好等于命令行参数的数量(不包括任何用于JVM本身的参数,如
-D
)。然后它在指定的类中搜索一个main函数并调用它。

它是
公共静态void main(String[]args)
。@nkr
String[]args
String args[]
都是相同事物的等效符号-一个类型为
String
@Ian:Oops数组的参数,我不知道,谢谢。