args是main方法接收命令行参数的字符串数组,由JVM在启动时根据空格(或双引号包裹的字符串)分割用户输入自动创建,未传参时为长度为0的非null数组。

Java 的 main 方法中,String[] args 是程序启动时接收外部传入参数的唯一通道。它本质是一个字符串数组,长度由命令行输入的参数个数决定,内容是用户在终端输入的每个参数(按空格分隔)。
args 是什么,怎么来的
当你运行 java MyProgram a b c,JVM 会把 "a"、"b"、"c" 三个字符串依次放入一个 String 数组,并作为实参传给 main(String[] args)。此时 args.length == 3,args[0] 是 "a",args[1] 是 "b",以此类推。
如果没传参数(如直接执行 java MyProgram),args 不为 null,而是长度为 0 的空数组 —— 这点很重要,不用判 null,但要检查长度。
常见用法和注意事项
实际使用中,建议按以下方式处理:
立即学习“Java免费学习笔记(深入)”;
- 先判断
args.length是否满足最低要求,避免ArrayIndexOutOfBoundsException - 参数通常代表配置、文件路径、开关标识等,可用
args[0].equals("-h")判断帮助选项 - 含空格的参数需用英文双引号包裹,例如:
java MyProgram "hello world" 42→args[0] == "hello world",args[1] == "42" - 数字或布尔值需手动解析:用
Integer.parseInt(args[1])或Boolean.parseBoolean(args[2]),注意捕获NumberFormatException等异常
简单示例:打印所有参数
下面这段代码能安全输出每个参数及其索引:
public class Main {
public static void main(String[] args) {
System.out.println("共收到 " + args.length + " 个参数:");
for (int i = 0; i < args.length; i++) {
System.out.println("args[" + i + "] = \"" + args[i] + "\"");
}
}
}
运行 java Main one "two three" 4.5 输出:
共收到 3 个参数:
args[0] = "one"
args[1] = "two three"
args[2] = "4.5"
进阶提示:替代方案更灵活
单纯靠 args 处理复杂命令行(比如带选项、默认值、类型校验)容易出错。生产项目推荐使用成熟库:
-
Apache Commons CLI:支持短选项(
-v)、长选项(--verbose)、参数绑定 - picocli:注解驱动,自动解析、生成帮助文档,支持子命令
- JCommander:轻量,通过字段注解映射参数
这些库不改变 main 签名,只是帮你把 args 转成结构化对象,逻辑更清晰、容错更强。










