Java程序的入口:main方法
写Java程序时,几乎每个初学者都会碰到一个固定写法:public static void main(String[] args)。这个方法就像你家的正门,程序运行必须从这儿进,少了它,JVM根本不知道从哪开始执行。
比如你在命令行输入 java HelloWorld,JVM就会在HelloWorld类里找main方法。找不到?直接报错“找不到主类”或者“没有main方法”,程序连启动都免谈。
main方法的标准写法
它的完整签名长这样:
public static void main(String[] args) {
// 程序入口代码
}拆开看:
- public:必须公开,JVM才能调用;
- static:静态,不需要创建对象就能运行;
- void:不返回值;
- main:方法名固定,不能写成mian或Main;
- String[] args:接收命令行参数。
命令行参数怎么用
很多人写完main方法就没动过args,其实它挺实用。比如你写了个数据处理工具,想通过命令行传文件路径进去:
public class DataTool {
public static void main(String[] args) {
if (args.length > 0) {
System.out.println("处理文件:" + args[0]);
} else {
System.out.println("请指定文件");
}
}
}编译后运行:java DataTool test.txt,程序就能读到test.txt这个参数。
常见错误排查
新手常踩几个坑:
拼写错误。把main写成Main或mian,JVM找不到,直接退出。
少了static。写成 public void main(),JVM无法调用,因为没实例对象。
参数类型不对。比如写成 int[] args 或漏了中括号,都不行。
有时候多个类都有main方法,运行时得明确告诉JVM用哪个。比如A类和B类都有main,执行java A就走A的main,跟B没关系。
main方法也能重载
你可以在同一个类里写多个main方法,只要参数列表不同:
public static void main() {
System.out.println("无参main");
}
public static void main(String[] args) {
System.out.println("有参main");
}但JVM只认 String[] args 那个,其他相当于普通静态方法,得手动调用才执行。
main方法不是终点,而是起点。理解它的工作机制,能帮你更快定位启动失败、参数无效这类问题,尤其在调试脚本或部署服务时特别管用。