是字符串args[]在java中实现为varargs



public static void main(String args[])String args[]是如何实现的?是否实现为varargs ?

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

它的实现完全像它看起来的那样——作为字符串数组。另一方面,Varargs是作为数组实现的——String...只是String[]的语法糖。

它是声明的(不是实现的),但是说它是声明的。使用varargs声明函数是完全合法的:

public static void main(String... argv)

编译器接受varargs声明并将其转换为字节码中的String[]。这种情况发生在所有使用变量的函数中。

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

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

最新更新