int main()拼写错误,这是错误的语法还是运行时?

时间:2018-09-13 23:23:21

标签: java

我正在介绍Java类,我们应该将错误标记为语法,运行时或逻辑。

对于Java程序中的此示例,

int main(){
}

拼写为

int man(){
}

我确定这是语法错误,因为main拼写错误,并且语法要求它是main而不是man。但是,我的老师把它标了下来,并告诉我这是一个运行时,因为试图在int main()中运行代码。

我明白了,但我仍然很困惑。谁能帮我弄清楚为什么在int main()中拼写main不会是语法错误?

我肯定会问我的老师,但是要等到下周一。

2 个答案:

答案 0 :(得分:3)

缺少返回语句

实际上,这是一个语法错误(更精确的是:编译时错误;该代码无法编译)。但这与main是否是入口点无关。

类似

的方法
int man() {

}

声明它返回int。但是您的方法不会返回任何内容。

尝试在不使用return语句的情况下编译代码,会出现如下编译时错误:

Foobar.java:23: error: missing return statement
  }
  ^
1 error

它必须返回int,例如:

int man() {
    return 42;
}

main作为入口点

用作Java项目入口点的方法称为main,并且必须具有以下签名:

public static void main(String[] args)

(变量名可以更改,也可以使用像String...这样的 varargs 。)

但是,Java类不需要入口点。您可以编译类而无需任何public static void main(String[] args)方法。您甚至可以在没有任何此类方法的情况下编译整个项目。

您的方法没有必需的签名,即使拼写正确的方法也是如此。是:

  • 不是public
  • 不是static
  • 不是void
  • 它也不接受String[]

因此,编译器将其作为常规方法接受,根本不关心该名称。

答案 1 :(得分:0)

没有理由不能使用名为man()的方法。main()唯一的特别之处在于它是程序的入口点。您无法使用man()

启动程序

在您的情况下,它不是public static void man(String[] args)的事实表明这根本不是错误,只是一个名为man()的方法