public static void main(String args[])
的{{1}}如何实施?它是以String args[]
实现的吗?
我问这个是因为varargs
只给出了传递的参数数量,这意味着它没有像args.length
那样被定义。这个数组是如何实现的?
答案 0 :(得分:12)
它的实现与它看起来完全一样 - 作为一个字符串数组。另一方面,Varargs实现为数组 - String...
只是String[]
的语法糖。
答案 1 :(得分:4)
声明(未实现)但你声明它已声明。使用varargs声明函数是完全合法的:
public static void main(String... argv)
编译器接受varargs声明并将其转换为字节码中的String[]
。对于使用varargs的所有函数都会发生这种情况。
当JVM开始运行程序时,它会创建一个与命令行参数的数量完全一样的数组(不包括用于JVM本身的任何参数,如-D
)。然后它在指定的类中搜索main函数并调用它。
答案 2 :(得分:2)
它只是一个字符串数组,使用在启动时传递给进程的参数值进行初始化。它不是可变参数列表。