知用网
柔彩主题三 · 更轻盈的阅读体验

Java程序main方法详解

发布时间:2026-01-11 12:41:19 阅读:22 次

Java程序main方法详解

Java程序时,几乎每个初学者都会碰到一个熟悉的结构:

public static void main(String[] args) {
// 代码逻辑
}

这个方法就是程序的入口点。无论你写的是简单的“Hello World”,还是复杂的企业级应用,JVM 都是从这里开始执行的。

为什么必须是main方法?

JVM在启动时会查找类中是否有符合规范的main方法。只有找到它,才能确定从哪里开始运行。这个方法名不能随意改成main2或者start,因为JVM是按固定规则去识别的。

方法签名的每一部分都有讲究

来看完整的定义:

public static void main(String[] args)

public:表示该方法对外公开,JVM需要能访问到它,不管这个类是不是被封装在某个包里。

static:静态修饰符。JVM调用main方法时还没有创建对象实例,所以必须通过类名直接调用,而不需要new一个对象。

void:表示没有返回值。main方法只是程序的起点,并不需要把结果返回给谁。

main:方法名固定。这是约定俗成的名字,就像房子的大门只能开在前墙一样,改了名字就进不去了。

String[] args:用于接收命令行参数。比如你在终端运行程序时传入一些值:

java MyProgram arg1 arg2

那么arg1和arg2就会被存进args数组里,在程序中可以直接使用。

args的实际用途举例

假设你写了一个计算成绩平均分的小工具:

public class AvgCalculator {
public static void main(String[] args) {
if (args.length == 0) {
System.out.println("请传入成绩数据");
return;
}
int sum = 0;
for (String arg : args) {
sum += Integer.parseInt(arg);
}
System.out.println("平均分:" + (double) sum / args.length);
}
}

然后在命令行运行:

java AvgCalculator 85 90 78 93

输出结果就是这四个数的平均值。这种设计让程序更灵活,不用每次改代码就能换输入数据。

main方法可以重载吗?

可以。你可以在一个类里写多个main方法,只要参数列表不同就行:

public static void main() {
System.out.println("无参main");
}

public static void main(String[] args) {
System.out.println("有参main");
}

但JVM只会执行带String[]参数的那个。其他重载的main方法只能被你自己代码内部调用,不会被自动识别为程序入口。

main方法能被继承吗?

可以。如果父类有一个main方法,子类没写,运行子类时也能执行父类的main:

class Parent {
public static void main(String[] args) {
System.out.println("Parent main");
}
}

class Child extends Parent {
// 没有main方法
}

运行java Child,输出的是“Parent main”。这是因为main是静态方法,子类会继承父类的静态成员。

常见错误写法

有时候程序编译没问题,但一运行就报错“找不到main方法”,可能是以下原因:

  • 把main写成Main或mian(大小写或拼写错误)
  • 少了static关键字
  • 参数类型不是String数组,比如写成了int[] args
  • 加了返回值,比如写成return 0;

这些都会导致JVM无法识别入口。

IDE中的main方法

现在很多开发用IDE,比如IntelliJ IDEA或Eclipse,敲main再按回车,会自动补全整个方法结构。这虽然方便,但也容易让人忽略背后的原理。理解每部分的作用,遇到问题时才不至于一头雾水。