我用Ruby和C ++编写了一些代码,但在Java中我不明白main方法的String[] args
参数是什么。
许多简单的Java('hello world')示例或多或少都是这样的:
public class HelloWorldApp {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
据我所知,其他语言的语法args
将用于将命令行参数传递给程序。但是,这些简单示例不使用命令行参数。
那么,为什么在不使用这些情况时需要args
参数?
答案 0 :(得分:1)
因为这不是一种动态语言;参数的数量和类型是方法签名的一部分,以下所有方法都是不同的方法:
public static void main(String[] args)
public static void main(Object[] args)
public static void main()
public static void main(Collection<String> args)
public static void main(List<String> args)
public static void main(String[] args, String other)
public static void main(String other, String[] args)
现在,在运行时期间将调用正确的方法,该方法实现在编译期间确定的最具体的类型参数 。 (注意:这不包括参数名称。)
这有一个副作用,即主方法必须具有适用于所有个案的特定签名。当您不带参数运行时,args
数组仍然存在,但长度为零。如果您的程序不接受参数,则可以完全忽略args
参数。
答案 1 :(得分:0)
在Java language specification, §12.4.1:
中指定了在JVM启动时执行的方法的签名方法main必须声明为
public
,static
和void
。它必须指定一个形式参数(§8.4.1),其声明的类型是String数组。
因此,您始终必须添加此参数。请注意,您可以使用String[]
或String...
作为类型。