0

是如何实现public static void main(String args[])String args[]?它被实施为varargs

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

4

3 回答 3

12

它完全按照它的外观实现 - 作为一个字符串数组。另一方面,可变参数是作为数组实现的——String...只是String[].

于 2013-03-08T15:32:37.640 回答
4

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

public static void main(String... argv)

编译器采用可变参数声明并将其转换为String[]字节码。这发生在所有使用可变参数的函数上。

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

于 2013-03-08T16:31:24.747 回答
2

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

于 2013-03-08T15:31:57.397 回答