为什么方法声明中的顺序很重要?

时间:2014-05-18 18:55:53

标签: java

我之前没有注意到,直到void无意识地错位main

 public static main void (String[] args){

 }

为什么会给我一个错误?

3 个答案:

答案 0 :(得分:9)

method syntax(由Java语言规范指定)强制要求:

 MethodDeclaration:
     MethodHeader MethodBody

 MethodHeader:
     MethodModifiers (opt) TypeParameters (opt) Result MethodDeclarator Throws (opt)

 MethodDeclarator:
     Identifier ( FormalParameterList (opt) )

简要概述:

  • 方法声明由方法标题和方法体组成。

  • 方法标题包含修饰符(可选,类型参数(也是可选的),结果(原始类型,void或其他Object),以及方法声明器。可以提供抛出(也是可选的)。

  • 方法声明器由某种标识符组成;这通常被描述为具有任何形式参数(如果有的话)的方法的名称。

让我们将其应用于main的有效声明:

public static  void      main     (String[] args)
   ^    ^       ^         ^              ^
  modifiers   result  identifier  parameter list

如果你改变了订单(让我们以你的例子为例),那你就结束了这个:

public static  main      void     (String[] args)
   ^    ^       ^          ^           ^
  modifiers   result  identifier  parameter list

等一下。 main不是有效的结果。并且void不是有效的标识符(这是两个中更令人震惊的错误;保留字can't be used as identifiers)。

这就是订单重要的原因; Java有意解析元素的顺序,看它们是否具有语法意义。引入与订单无关的声明对于阅读代码的任何人来说都会非常混淆,并且可能会违反长期持有的方法声明惯例。

答案 1 :(得分:1)

基本上,您正在尝试创建一个名为void的方法,其中输出类型为main

这根本无效。使用main交换void

如果您需要有关定义方法的更多信息,请尝试java tutorials。它们中的方法签名有详尽的解释。

答案 2 :(得分:0)

更一般地说,方法声明按顺序有六个组件:

修饰符:指定方法对外人可见的方式

例如public(对所有人都可用)private(仅在class内可用),以及其他类似static。

返回类型 - 方法返回的值:如果方法返回10,那么我们可以使用int作为返回类型。如果方法没有返回值,则为void。

方法名称 - 我们可以给予的方法的名称,但是主要的。它应该是主要的,因为它将由JVM自动调用。

括号中的参数列表 - 以逗号分隔的输入参数列表,以其数据类型开头,括在括号中,()。如果没有参数,则必须使用空括号。

使用throw关键字在方法名称后添加的例外列表。

括在括号之间的方法体 - 方法的代码,包括局部变量的声明,就在这里。

了解更多信息,请点击此处 java methods