为什么我们在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
必须是 public
、static
、void
并接受一个 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数组。它不需要该参数的特定名称。
我是 java.When 执行一个简单程序的初学者 我注意到在 main 方法中
public static void main(String args[])
args[]
可以任意命名,它会成功执行。这是为什么?
args
只是String[]
类型的变量名。它就像您程序中的任何其他变量名一样。
如前所述,变量名只是内部变量,编译器只关心类型(字符串数组)。例如,如果你用反射调用方法,你可以只传递一个参数数组 object[] { new String[]{ "my arguments args[]" } ....
坦率地说:因为文档是这么说的。 1
main
必须是 public
、static
、void
并接受一个 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数组。它不需要该参数的特定名称。