Java main 方法中 String[] args 的用途是什么?

java main 方法详解:程序入口与参数传递

main 方法是 Java 应用程序的入口点,它指定程序启动时执行的代码。包含 main 方法的类成为主类。例如:

public class Main {
    public static void main(String[] args) {
        System.out.println("Hello, world!");
    }
}

使用命令 java Main.java 运行此类,控制台将输出 "Hello, world!"。 命令 java 执行 Java 代码,Main.java 指定包含 main 方法的类名。 -version 等参数则用于传递特定指令,例如获取 Java 版本:java -version

String[] args 的作用在于允许在运行应用程序时传递参数。在类名后添加空格分隔的参数将存储在 args 数组中,并在 main 方法中访问。

例如,运行 java Main.java hello worldargs 数组将包含 "hello""world" 两个元素。

以下代码演示了如何打印 args 数组的内容:

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        System.out.println(Arrays.toString(args));
    }
}

运行 java Main.java 输出 [] (空数组),运行 java Main.java apple banana 输出 [apple, banana]

示例:简单的命令行计算器

以下代码演示了一个简单的命令行计算器,接收三个参数:数字1、运算符、数字2。

public class Main {
    public static void main(String[] args) {
        if (args.length != 3) {
            System.out.println("请提供三个参数:数字1,运算符 (+, -, *, /),数字2");
            return;
        }

        try {
            int num1 = Integer.parseInt(args[0]);
            int num2 = Integer.parseInt(args[2]);
            String operator = args[1];
            int result = 0;

            switch (operator) {
                case "+" -> result = num1 + num2;
           

case "-" -> result = num1 - num2; case "*" -> result = num1 * num2; case "/" -> result = num1 / num2; default -> { System.out.println("无效的运算符"); return; } } System.out.println(num1 + " " + operator + " " + num2 + " = " + result); } catch (NumberFormatException e) { System.out.println("无效的数字输入"); } } }

运行 java Main.java 10 + 5 输出 10 + 5 = 15

参数传递不仅限于命令行,IDE(例如 IntelliJ IDEA)也支持在运行配置中传递参数。

对于复杂的命令行参数处理,可以使用 Apache Commons CLI 或 JCommander 等库简化开发。

总而言之,String[] args 提供了一种灵活的机制,允许向 Java 应用程序传递参数并执行相应的操作,虽然处理复杂参数可能比较繁琐,但利用合适的库可以有效地简化此过程。