Java 简明教程

Java - Command Line Arguments

Java 中, command line arguments 是在应用执行期间将输入传递到 Java 程序的一种方法。可以有多种方式将 Command line arguments 传递到 Java 应用或程序。最常见的是,在执行 java program 的控制台传入命令行参数。在程序执行期间提供的命令行参数在 main() 方法中捕获为 string 数组。

Passing & Accessing Command Line Arguments

考虑以下传递命令行参数的语法:

javac tester.java
java tester arg1 arg2 arg3

在此我们编译了一个 Java 文件 tester.java,并在使用 Java 运行测试器类时,我们传递了三个由空格分隔的参数。我们可以将任意数量的命令行参数传递到 Java 程序。 Java Virtual Machine (JVM) 将这些输入封装到 args[] 数组中。我们可以使用 args.length 检查传入的参数数量。如果没有命令行参数,则此数组为空。

class Tester {
   public static void main(String[] args){
   ...
   }
}

我们可以使用命令行参数来传递字符串、整数和任何其他原始值。传入的每个参数都会按照输入的顺序保存在数组中,从 args[0] 开始。

Benefits of Command Line arguments

  1. 命令行参数允许通过在应用程序启动之前传递参数来配置应用程序的行为。批处理是大量使用命令行参数的示例之一,用于使用配置参数执行 java 命令。此机制通过控制台输入对 Java 程序进行动态参数化,从而提高了多功能性和交互性。

  2. 命令行参数促进了基于控制台的应用程序中的用户输入检索和操作。

Example of Single Command Line Argument

在此示例中,我们正在检查是否仅传入了一个参数来表示 name。如果未传入任何参数或传入了一个以上参数,我们打印错误消息,表示传入参数数无效。否则,我们打印带称呼的 name。

public class Tester {

   // args array represents the command line arguments passed
   public static void main(String[] args) {
      // if only one argument is passed
      if(args.length == 1) {
	     String name = args[0];
         System.out.println("Welcome " + name + "!");
      }else { // otherwise print an error message
         System.out.println("Invalid Command line argument(s) passed.");
      }
   }
}

Output

让我们编译并运行上述程序,没有任何命令行参数,这将产生以下结果:

D:\test>javac Tester.java

D:\test>java Tester
Invalid Command line argument(s) passed.

在这里,我们使用 javac 命令编译了 java 代码,然后在不带任何命令行参数的情况下使用 java 命令运行。让我们再次使用所需的参数运行 java 命令。

D:\test>java Tester Mahesh
Welcome Mahesh!

Example of Multiple Command Line Arguments

在此示例中,我们正在检查是否仅传入两个参数来表示 name 和 age。年龄是个数,我们使用 parseInt() 方法来解析参数。如果未传入任何参数或传入两个以上参数,我们打印错误消息,表示传入参数数无效。否则,我们打印收到的 name 和 age。

public class Tester {

   // args array represents the command line arguments passed
   public static void main(String[] args) {
      // if two arguments are passed
      if(args.length == 2) {
	     String name = args[0];
         // parse the age as int
         int age = Integer.parseInt(args[1]);
         System.out.println("Name: " + name + ", age: " + age);
      }else { // otherwise print an error message
         System.out.println("Invalid Command line argument(s) passed.");
      }
   }
}

Output

让我们编译并运行上述程序,没有任何命令行参数,这将产生以下结果:

D:\test>javac Tester.java

D:\test>java Tester
Invalid Command line argument(s) passed.

在此,我们使用 javac 命令编译了 Java 代码,然后使用 java 命令运行,且没有任何命令行参数。让我们再次使用必需的参数运行 Java 命令。

D:\test>java Tester Mahesh 40
Name: Mahesh, age: 40

Conclusion

Java 命令行参数对于创建参数化 Java 程序非常有用,这些程序可以动态接受参数。用户对程序的行为具有运行时控制,因为可以将参数传递给 main() 方法。使用命令行参数,我们可以在运行时管理程序的输出、设置设置参数以及指定输入文件,而没有任何编译时间依赖关系。

我们可以通过多种方法向一个 Java 程序传递命令行参数。各种 IDE 支持在其执行配置中提供参数。而且,它们易于使用。当你运行代码时,它可以设置在程序的配置文件中或者在命令行上输入。