首先,我们都明白,第一次接触java的时候,关于主方法老师明确要求是背下来的(当然也有自学的就除外了),也就是public static void main(String args[]),没有说明为什么,为什么要有那么多的修饰词,只是说这是一种内在规定,后来也就淡忘了。
到底怎么个内在规定法,下面进入正题:
对main方法进行说明:java规定:main方法是java应用程序的入口,每个java应用程序都是从main方法开始运行的。(这个确确实实是内在规定),当程序运行时,JVM会从.class文件中查找main方法,如果没有,则报错。
那为什么会有那么多的修饰词或限定词呢?
1、public(公共的) 根据java修饰词的级别中我们知道,不同的包只有public才可访问,故只能修饰为public,所以,JVM才有权限去访问。(JVM执行包和应用程序可定不再同一包下)
2、static(静态的)在java规范中,被static修饰的成员变量或成员方法归某个类所有,它不依赖于类的某个实例,被类的所有实例所共享。为了JVM能够在一加载了main方法所属的类就能够执行main方法,而无需先创建这个类的具体实例,因此main方法必须用static修饰。
3、void(空返回)首先,main方法如果允许有返回值的话,你希望返回什么?我们要知道执行main方法的是JVM,你给JVM返回一个值,让它做什么?其实只能返回一个代表退出状态的int值,java中,main方法正常退出的状态代码为0,表示成功的运行完程序。若要用不同的退出代码终止程序,则使用System.exit()。因此,JVM不允许main方法像操作系统返回“退出状态代码”,main方法返回值必须为void,这就是JVM规范所规定的。