String [] arg和String [] args之间的区别?

时间:2015-04-08 14:11:30

标签: java

String[] argsString[] arg之间是否存在差异?

我的任务是在HelloWorld计划中拼错某些内容。

当我在args中拼错arg时:

public class HelloWorld {
     public static void main(String[] args) {
          System.out.println("Hello, World");

程序编译并正确运行。因此,我试图理解为什么argargs一样有效。

arg只是args的替代拼写,或两者之间有区别吗?

编辑:我刚尝试将args拼写错误ars,程序编译并再次正确运行。我现在肯定很困惑。

7 个答案:

答案 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)

argargs是您声明的类型的变量名称。

这些变量名称可以是任何名称,但它有一些限制。

您可以参考here获取有关设置变量名称的帮助。

答案 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方法才允许从类中进行此操作。