1)public :这个字段决定了方法是否可以被外部方法调用。我们知道C语言里面的函数是运行操作系统环境中的,可以认为操作系统一个大的方法,这个方法调用了C语言的 main()。Java 中也是同样的道理,只不过 Java 的 main 方法是跑在 JVM 中的。如果不限定 public,JVM 就不能调用 main 方法。
注意:在 Java SE1.4 以前是不强制 main 方法为 public 的。当 main 方法不是 public 时,有些版本的 Java 解释器也可以执行 Java 应用程序。Java SE1.4 及以后的版本中强制 main 方法是 public。
面向对象的语言叫方法,例如 Java。面向过程的语言叫函数,例如C语言。实际上方法就是函数,函数就是方法,只是在不同的语言不同的称呼而已。
2)static:在C语言中,所有的函数都可以被直接调用,main 函数相当于全局方法,没有类的概念,但在 Java 中一般先要创建一个类的对象,再通过对象调用方法,但是在执行 main 方法之前创建一个对象显然是不可能的,因为 JVM 规定 main 方法为入口方法,从 main 开始执行。static 关键字就解决了这个问题,static 关键字修饰的方法可以视为类方法,不需要创建对象就可以直接调用该方法。
3)void:由于 Java 的主方法是栈中最底层的方法,所以并不存在能够接收的值,没有能接收 main 方法的返回值,所以使用 void。
为什么 Java 不能像C语言,C++ 那样返回 int 型值?
C语言的 main 函数的调用过程:首先,程序进入到入口方法之前,是发生了很多事情的。操作系统的安排,启动运行时库,运行时库再初始化好环境,然后启动你的入口函数,你的程序才正常的运行起来。等你的程序运行结束后,就退回到运行时库,然后再退回到操作系统,然后系统再调度其他程序执行。因为 main() 不是由操作系统直接调用,所以返回类型不一样也是可以理解的。可以认为运行时库就是操作系统和 main 函数的中间联系人,在C语言中由运行时库直接调用 main 函数,所以 main 函数的返回值也是运行时库接收。
在 Java 中,可以认为是操作系统→JVM→main 方法这样的调用过程,JVM 直接调用 main 方法,所以如果 main 方法有返回值,即 JVM 接收。但是 JVM 被设计为不接受任何返回值,所以 main 方法不能有返回值,只能 void。
4)String[]:类似于C语言中的参数 char**和int,Java 中数组可以记录数目,所以省去了 int 类型的参数来表示字符串个数。
因此,main() 方法定义必须是:“public static void main(String[] 字符串数组参数名) ”,这是 Java 的规范。
原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/23564.html