public static void main (String[] args) 是Java程序的入口方法,JVM在运行程序时,会先查找 main() 方法。
- public 是权限修饰符,表明任何类或对象都可以访问这个方法。
- static 表明mian()方法是一个静态方法,即方法中的代码是存储在静态存储区的,只要类被加载后,就可以使用该方法而不需要通过实例化对象来访问,可以直接通过类名.main() 直接访问。
- void 表明方法没有返回值。
- main 是JVM识别的特殊方法名,是程序的入口方法。
- 字符串数组参数args 为开发人员在命令行状态下与程序交互提供了一种手段。
引申:
(1)main() 方法是否还有其他可用的定义格式?
- static public void main (String[] args) —— public 和 static 没有先后顺序
- public static final void main (String[] args) —— 可以定义为final
- public static synchronized void main (String[] args) —— 可以上同步锁
不管用哪种定义方式,都必须保证 main() 方法的返回值为 void,并有 static 和 public 关键字修饰。同时由于 main() 方法为程序的入口方法,因此不能用 abstract 关键字来修饰。
(2)同一个 .java 文件中是否可以有多个 main() 方法?
虽然每个类中都可以定义 main() 方法,但是只有与文件名相同的用 public 修饰的类中的 main() 方法才能作为整个程序的入口方法。
class T {
public static void main (String[] args) {
System.out.println("T main");
}
}
// 必须是用 public 修饰,且类名与文件名相同的类中的 main() 方法才是入口。
public class Test {
public static void main (String[] args) {
System.out.println("Test main");
}
}
程序运行结果为:
Test main