main 方法是 Java 程序的入口点,它的标准签名是:

public static void main(String[] args)
这里,我们重点解析 args 这个参数。
args 是什么?
args 是一个 字符串数组 (String[]) 的名称。
String[]: 这表示args是一个数组,并且数组中的每一个元素都是String类型的。args: 这个名称是 "arguments"(参数)的缩写,这是一个约定俗成的命名,你可以使用任何合法的变量名(如params,commandLineArguments),但args是最常见、最被广泛接受的写法,强烈建议遵守这个约定。
args 的作用
args 用于接收在命令行中运行 Java 程序时传入的参数。
当你编译并运行一个 Java 程序时,可以在 java 命令后面跟上你想要传递给程序的参数,这些参数会被 JVM(Java 虚拟机)捕获,并组织成一个字符串数组,然后传递给 main 方法的 args 参数。

如何在命令行中传递参数?
假设你有一个名为 MyProgram.java 的文件。
第一步:编译程序
javac MyProgram.java
这会生成一个 MyProgram.class 文件。
第二步:运行程序并传递参数
使用 java 命令,在类名后面跟上你想要传递的参数,参数之间用空格隔开。
java MyProgram hello world 123
在这个例子中:
java是 JVM 的启动命令。MyProgram是你想要执行的类。hello,world,123就是传递给main方法的三个参数。
args 数组的内容解析
当你运行 java MyProgram hello world 123 时,args 数组的内容如下:
args的长度 (args.length) 是 3,因为你传入了3个参数。args[0]的值是"hello"。args[1]的值是"world"。args[2]的值是"123"。
重要提示:
- 所有参数,无论你输入的是数字还是其他符号,在
args中都以字符串的形式存在。"123"是一个字符串,而不是整数123,如果你需要把它当作数字使用,必须手动进行类型转换(使用Integer.parseInt(args[2]))。 args数组不包含类名(MyProgram),类名是 JVM 用来定位并启动主类的,它不是main方法的参数。
代码示例
下面是一个完整的示例,演示如何遍历并打印 args 数组中的所有参数。
ArgumentExample.java
public class ArgumentExample {
public static void main(String[] args) {
// 1. 检查是否传入了参数
if (args.length == 0) {
System.out.println("没有传入任何参数。");
} else {
System.out.println("总共传入了 " + args.length + " 个参数。");
System.out.println("参数列表如下:");
// 2. 使用 for 循环遍历 args 数组
for (int i = 0; i < args.length; i++) {
System.out.println("参数 [" + i + "]: " + args[i]);
}
}
System.out.println("--------------------");
// 3. 使用增强 for 循环 (for-each) 遍历 args 数组
System.out.println("使用 for-each 循环打印参数:");
for (String arg : args) {
System.out.println(arg);
}
}
}
运行和输出
不传参数
java ArgumentExample
输出:
没有传入任何参数。
--------------------
使用 for-each 循环打印参数:
传入参数
java ArgumentExample Java is fun 2025
输出:
总共传入了 4 个参数。
参数列表如下:
参数 [0]: Java
参数 [1]: is
参数 [2]: fun
参数 [3]: 2025
--------------------
使用 for-each 循环打印参数:
Java
is
fun
2025
main 方法签名详解
为了完整性,我们再回顾一下整个 main 方法的签名:
public static void main(String[] args)
public: 访问修饰符。main方法必须被public修饰,这样 JVM 才能从任何地方访问它。static: 关键字,这意味着main方法属于类MyProgram,而不是属于类的某个实例,你不需要创建MyProgram的对象(即new MyProgram())就可以调用main方法,JVM 在程序启动时可以直接通过类名调用它。void: 返回类型。main方法在执行完毕后不返回任何值,程序结束的信号由 JVM 发出,而不是main方法返回一个值。main: 方法名,这是 JVM 规定的固定名称,JVM 会自动寻找这个名称的方法作为程序入口。String[] args: 参数列表,这是我们讨论的核心,用于接收命令行参数。
| 特性 | 描述 |
|---|---|
| 名称 | args (arguments的缩写),是 String[] 类型的变量名。 |
| 类型 | String[],一个字符串数组。 |
| 作用 | 接收在命令行中通过 java 命令传入的参数。 |
| 索引 | 第一个参数是 args[0],第二个是 args[1],以此类推。 |
| 长度 | 参数的数量可以通过 args.length 获取。 |
理解 main 方法的 args 参数是掌握 Java 命令行程序开发的基础,它使得你的程序可以更加灵活和动态地接收外部输入。
