当前位置: 首页 > 面试题库 >

Java数组约定:String [] args与String args []

佟颖逸
2023-03-14
问题内容

我目前正在以指导学生编程的方式教学生。我告诉他们,他们可以在Oracle代码约定中找到大多数约定。

在我的上一教程中,一个学生问:

public static void main(String args[])

要么

public static void main(String[] args)

是按惯例写的还是有区别的。我以前从未看过第一个版本,因此,我非常确定第二个版本是一个约定。但是我没有消息来源。

您能给我一个明确说明惯例中的哪一个的来源(最好是来自oracle,例如我上面链接的页面)吗?

两个表达式的等价

我知道这两个表达式是等效的:

的JLS 7,第 292个州:

An array type is written as the name of an element type followed 
by some number of empty pairs of square brackets [].

而且在第 293:

The [] may appear as part of the type at the beginning of the declaration, 
or as part of the declarator for a particular variable, or both.

For example:
    byte[] rowvector, colvector, matrix[];
This declaration is equivalent to:
    byte rowvector[], colvector[], matrix[][];

但这对约定问题没有帮助。

因此它们是相同的(不是规格,但这是来源)。在一个小的示例中,它们产生相同的字节码,因此我非常确定它们在实践上也相同。


问题答案:

这不是来自Oracle,但我认为它将有所帮助。

它来自Kathy Sierra的书 SCJP Sun Java 6认证程序员

int[] key;
int key [];

声明数组引用时,应始终将数组括号放在声明的类型之后,而不是在标识符(变量名)之后。
这样,任何阅读代码的人都可以轻松地看出,例如,key是对int数组对象的引用,而不是int原语。



 类似资料:
  • 嗨,我是一个java学习者,并试图使这个程序添加两个数字。 异常在线程"main"java.lang.ArrayIndexOutOfBounds异常: 0在addnumber.main(addnumber.java:16)Java结果: 1 我知道我可以使用Scanner类或string builder类,但是这段代码有什么问题吗?

  • 问题内容: 由于它可能是Java语言中使用最广泛的方法之一,因此为什么它必须接受字符串数组并且没有它就无法工作?例如,我可以一直住: 过度 除了能够接受命令行参数之外,还有其他更高的目的吗,尤其是因为绝大多数Java程序都是GUI驱动的,并且不需要通过命令行接收args? 问题答案: 甚至GUI驱动的Java应用程序也将从某些主要方法开始。“更高的目的”从来没有接受命令行参数。 目的只是接受参数。

  • 问题内容: 之间有什么区别: 和 我不相信,但是我想知道。 问题答案: 从语义上讲,它们是相同的。但是,我建议在声明数组时使用后一种语法()。以前的语法主要用于与C语法兼容。 因为总体上来说,它是Java中对象的类型,所以它更加一致,而且很清楚不要将其拆分。

  • 问题内容: 我刚刚开始用Java编写程序。以下Java代码是什么意思? What is String[] args? When would you use these args? 源代码和/或示例优先于抽象解释 问题答案: 在Java中,包含提供的命令行参数作为对象数组。 换句话说,如果你运行你的程序作为然后将包含。 如果要输出的内容,可以像这样遍历它们…

  • 问题内容: 我知道String [] args是作为参数传递给main的字符串数组。 但是,当您不将其包含为参数时(即使您不使用它),它也会引发异常。那么为什么需要它呢?另外,为什么不能是int []或boolean []? 问题答案: 这是一个字符串,因为命令行以文本形式表示。如果要将文本转换为整数或布尔值,则必须自己做- 操作系统或Java引导程序如何确切知道您希望如何解析所有内容?我想Jav

  • 问题内容: 在下面的摘录中,您如何向 初学者 很好地解释的含义和用法? 问题答案: 我将向初学者介绍有关Main函数的Wiki文章,然后对此进行补充。 Java只开始运行具有特定签名的程序,并且人们可以将签名视为自己的名字-这就是Java如何分辨别人的签名和true 的区别。 是s 的集合,以空格分隔,可以在终端上将其键入程序中。初学者不会多次使用此变量,但总是以防万一。