public static void main(String[] args){…}
这是Java程序的入口,是main方法的方法签名
为什么要采用这种签名方式?
首先了解几个概念:
- Java类是由JVM进行调用的
- static修饰的成员变量和方法都属于类,而不属于类的对象
- JVM调用main方法一定是写成了通用的接口去执行该方法,不会因为你的包不同而调整接口处理方式
public修饰符:为了让JVM自由的调用,使用public将方法暴露出来;
如果定义为private,外部是无法访问的,JVM失去的访问权
如果定义为protected,不同的包访问的权限存在不同
这就暴露出一个问题:权限问题
在开发中,很多逻辑都是在main方法之外的,main方法实际上是一个调用者和执行者
因此完全没必要进行私有化
使用public可以使JVM执行main方法的逻辑更加简单
static修饰符:不需要创建该main方法所在类的对象就可以调用main方法
new一个对象,就会多占用内存
static属于类,直接用类名.main方法即可
void返回值:JVM调用main方法,如果有返回值,返回值也会返回给JVM
JVM既不做用户的逻辑处理,也不会存储这个返回值来浪费空间
如果有返回值,返回值定义成什么能满足用户的全部需求--这是未知的。
因此返回值无意义的情况下,JVM自然不会做这么奇怪的事情
String[] args:是一个字符数组
我们知道c和c++的main方法实质上都是有传递参数的
java为了用户能够更加灵活的使用main方法,也就使用了这样一个字符数组--我们其实可以看做是一个可变参数