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

时间:2013-03-08 15:30:32

标签: java main variadic-functions args

public static void main(String args[])的{​​{1}}如何实施?它是以String args[]实现的吗?

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

3 个答案:

答案 0 :(得分:12)

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

答案 1 :(得分:4)

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

public static void main(String... argv)

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

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

答案 2 :(得分:2)

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