是如何实现public static void main(String args[])
的String args[]
?它被实施为varargs
?
我问这个是因为args.length
只给出了传递的参数数量,这意味着它没有在任何地方定义String args[] = new String[30]
。这个数组是如何实现的?
是如何实现public static void main(String args[])
的String args[]
?它被实施为varargs
?
我问这个是因为args.length
只给出了传递的参数数量,这意味着它没有在任何地方定义String args[] = new String[30]
。这个数组是如何实现的?
它完全按照它的外观实现 - 作为一个字符串数组。另一方面,可变参数是作为数组实现的——String...
只是String[]
.
它已声明(未实现)但是您说它已声明。使用 varargs 声明函数是完全合法的:
public static void main(String... argv)
编译器采用可变参数声明并将其转换为String[]
字节码。这发生在所有使用可变参数的函数上。
当 JVM 开始运行您的程序时,它会创建一个与命令行参数数量完全相同的数组(不包括-D
为 JVM 本身准备的任何参数)。然后它在指定的类中搜索一个主函数并调用它。
它只是一个字符串数组,它使用启动时传递给进程的参数值进行初始化。它不是一个可变参数列表。