为什么我们在java main 方法中将args[] 命名为arhs[](或任何其他名称)就没有错误?

How come there is no error if we name args[] as arhs[](or any other name) in java main method?

我是 java.When 执行一个简单程序的初学者 我注意到在 main 方法中

public static void main(String args[])

args[] 可以任意命名,它会成功执行。这是为什么?

args只是String[]类型的变量名。它就像您程序中的任何其他变量名一样。

如前所述,变量名只是内部变量,编译器只关心类型(字符串数组)。例如,如果你用反射调用方法,你可以只传递一个参数数组 object[] { new String[]{ "my arguments args[]" } ....

坦率地说:因为文档是这么说的。 1

main 必须是 publicstaticvoid 并接受一个 String 数组作为参数。剩下的就交给程序员了……但是除了参数的名字,剩下的不多了。

我不能代表 Java 背后的许多想法,但是强制使用参数名称并不是那么重要;当 JVM 想要调用 main 时,它并不关心 args 中的拼写错误。重要的是签名,它由return类型、名称和传入参数的类型定义。

当你调用一个方法时,你并不关心它的参数名称是什么,是吗?

说我有这个方法:

public static void doStuff(int number) {}

我可以这样称呼它:

doStuff(10);

我是否需要在调用代码的任何地方使用参数名称 number?编号

即使您通过反射调用该方法(我认为这是您 运行 一个 java 程序时实际发生的情况),您也不需要参数名称。

Method m = clazz.getMethod("main", String[].class);
m.invoke(null, null);

main 方法必须有特定的签名。签名指定方法名称和参数类型,但不指定参数名称。

也就是说,is必须是public,static和void,调用main,参数是String数组。它不需要该参数的特定名称。