main方法为何为public static void
参考内容来自stackoverflow
链接如下
笔者综合了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。