main方法为何为public static void

来源:互联网 发布:淘宝页面图片 编辑:程序博客网 时间:2024/05/22 01:55

main方法为何为public static void

参考内容来自stackoverflow

链接如下

  • why is the java main method static
  • public static void main(String arg[ ] ) in java is it fixed?

笔者综合了stackoverflow上的不少回答,总结如下:

关于main方法的签名在《Oracle Java Language Specification》的第12.1.4节里面有详细的定义。

The method main must be declared public, static, and void. It must accept a single argument that is an array of strings. This method can be declared as either. —— O.J.L.S section 12.1.4

在JDK源码中我们也能发现这样的规定

FROM : (jdk-src\j2se\src\share\bin\java.c)
/* Get the application's main method */mainID = (*env)->GetStaticMethodID(env, mainClass, "main","([Ljava/lang/String;)V");

我们可以清晰的看到main方法签名。

对于为何这样定义,Stackoverflow的解释为:

  • public的原因为让外部可以访问到它;
  • static是因为调用这个程序的入口方法无形实例化所在类的对象;
  • void是因为让入口方法返回值是没有意义的,因为程序很有可能在到达方法尾部之前结束如调用System.exit(int status);
  • String[] args是用来接收启动程序时传入的参数
  • 起名为“main”是因为在过去大量使用C的日子里,方法名称是很有讲究的。main在C语言中就是入口函数的名称,Java沿袭这个传统。

综上所述,main方法长这个样子,可以说就是一种惯例,一种规定,一种convention

0 0
原创粉丝点击