我们可以为方法提供参数args[]
或main()
选择不提供。但是,如果我们在没有传递足够参数的情况下调用任何其他参数化方法,就会给我们一个错误。
为什么方法不是这样main(String[] args)
?
public static void main(String[] args)
main
总是接收它的参数,它是一个数组String
。如果您不传递任何命令行参数,args
则为空,但它仍然存在。
始终传递一个字符串数组,即使不存在命令行参数。在这种情况下,数组的长度为 0,您可以通过以下方式自行测试
public static void main(String[] args) {
if (args.length == 0) {
System.out.println("no parameters were passed");
}
}
如您所见, main 除了一个函数参数 - 它是一个字符串数组。JVM 负责将任何命令行参数作为字符串数组传递给主函数。如果没有给出参数,则传递一个空数组 - 但它仍然存在。
您也可以将自己的函数定义为:
void myMain(String args[]) {
for(int i = 0; i < args.length; i++) {
System.out.println(args[i]);
}
}
然后您可以调用此函数,模拟传递三个命令行参数:
String a[] = {"foo", "bar", "bah"};
myMain(a);
或者您可以模拟没有给出命令行参数的情况:
String a[] = {};
myMain(a);
您也可以args
从真正的 main 传递给您的函数,无论是否给出任何参数,它都会起作用:
public static void main(String[] args) {
myMain(args);
}
请注意,没有空指针检查,myMain
因此如果您将它传递给null
它,它将抛出 NPE。
因为是特殊的,并且在没有给出任何内容的情况下Main
自动取一个空的 leu。String array
因为这准确地描述了main()
没有参数的调用。系统提供此功能是为了方便。
Java 使用参数调用 main 方法本身,因此即使我们“调用”不带参数也不会出错。
我认为上面的答案已经捕获了足够的信息,因此 args 总是有价值的。
所以,我试着用编程的方式稍微解释一下。
想象一下,当没有参数传入命令行时
就像调用 main(null) 然后 args = null;
当有参数传入命令行时 args = 'passed value';
因此,即使没有传入参数,它仍然可以执行。
那里