String[] args
和String[] arg
之间是否存在差异?
我的任务是在HelloWorld
计划中拼错某些内容。
当我在args
中拼错arg
时:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World");
程序编译并正确运行。因此,我试图理解为什么arg
与args
一样有效。
arg
只是args
的替代拼写,或两者之间有区别吗?
编辑:我刚尝试将args
拼写错误ars
,程序编译并再次正确运行。我现在肯定很困惑。
答案 0 :(得分:6)
没有区别。 Java区分类型,变量名称仅供您使用
答案 1 :(得分:6)
只要您不使用变量,无论您将其指定为args
还是arg
都没有区别。字节码不存储类型实际名称。它知道分配的变量接受String[]
。
答案 2 :(得分:1)
您可以随意调用它。这是你的论点的名称。 真正重要的是方法的签名。
当从控制台执行java类时,main方法就是所谓的。为了实现这一点,这个主要方法的定义必须是
public static void main(String [])
将参数命名为args是一种标准约定,但不是严格要求的。
在Java中,args包含提供的命令行参数作为String对象数组。
换句话说,如果您将程序作为
运行java HelloWorld one two
然后args将包含
["one", "two"]
答案 3 :(得分:1)
答案 4 :(得分:0)
没有。没有区别。 arg语法主要是为了兼容C语法
答案 5 :(得分:0)
没有区别。变量名对您很重要,通常,编译器只关心变量是否存在。
现在,关于main方法,以下签名是有效且等效的:
public static void main(String[] args);
public static void main(String args[]);
public static void main(String... args);
但是,javap
输出不同,var-args保留:
String[]
Compiled from "HelloWorld.java"
public class HelloWorld {
public HelloWorld();
public static void main(java.lang.String[]);
}
注意区别:
String...
Compiled from "HelloWorld.java"
public class HelloWorld {
public HelloWorld();
public static void main(java.lang.String...);
}
答案 6 :(得分:0)
虽然其他答案明确表示,而且由于我不能在评论中写这个,我会把它作为答案。
对main
方法签名的一点解释可能会帮助您理解Java的重要:
...您可以将参数命名为您想要的任何内容,但大多数程序员选择“args”或“argv”。
...此数组是运行时系统将信息传递给应用程序的机制。
main
被声明为void
,因为一旦完成,并不意味着程序已完成。如果它产生新线程,则可能是这些线程仍在运行。
它是public
,因为它被JVM调用以运行超出项目范围的方法。
...并且是static
因为当JVM调用它时,正在调用的类中存在 no object 。因此,它必须有static
方法才允许从类中进行此操作。