Java - 命令行参数
在 Java 中,command line arguments(命令行参数)是一种在应用程序执行期间向 Java 程序传递输入的方法。Command line arguments 可以以多种方式传递给 Java 应用程序或程序。最常见的是从控制台传递命令行参数,在那里执行 Java 程序。在程序执行期间提供的 command-line arguments 被捕获到 main() 方法中的字符串数组中。
传递与访问命令行参数
考虑以下传递 command-line arguments 的语法:
javac tester.java java tester arg1 arg2 arg3
这里我们编译了一个名为 tester.java 的 Java 文件,并在使用 java 运行 tester 类时,传递了三个用空格分隔的参数。我们可以向 Java 程序传递任意数量的命令行参数。Java Virtual Machine (JVM) 将这些输入封装到 args[] 数组中。我们可以使用 args.length 检查传递的参数数量。如果没有命令行参数,则该数组为空。
class Tester {
public static void main(String[] args){
...
}
}
我们可以使用命令行参数传递 Strings、integers 和任何其他 primitive 值。每个传递的参数按照输入顺序从 args[0] 开始在数组中可用。
命令行参数的好处
- 命令行参数允许在应用程序启动前通过传递参数来配置应用程序行为。Batch processes 是其中一个例子,在那里命令行参数被广泛用于执行带有配置参数的 Java 命令。这种机制通过控制台输入实现了 Java 程序的动态参数化,提高了多功能性和交互性。
- 命令行参数方便了基于控制台的应用程序中用户输入的获取和操作
单个命令行参数示例
在这个示例中,我们检查是否正好传递了一个参数来表示名称。如果没有传递参数或传递了多个参数,我们会打印错误消息“传递了无效数量的命令行参数”。否则,我们会打印带有问候语的名称。
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.");
}
}
}
输出
让我们编译并运行上述程序而不带任何命令行参数,这将产生以下结果 −
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 - Getting primitive value from command line arguments
在这个示例中,我们检查是否正好传递了两个参数来表示姓名和年龄。由于年龄是一个数字,我们使用 parseInt() 方法解析参数。如果没有传递参数或传递了超过两个参数,我们会打印错误消息,提示传递的参数数量无效。否则,我们会打印接收到的姓名和年龄。
public class Tester {
// args array represents the command line arguments passed
// args 数组表示传递的命令行参数
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
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.");
}
}
}
输出
让我们编译并在没有命令行参数的情况下运行上述程序,这将产生以下结果 −
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
结论
Java 命令行参数非常有用,可以创建参数化的 Java 程序,这些程序可以动态接受参数。用户可以在运行时通过传递参数到 main() 方法来控制程序的行为。使用命令行参数,我们可以在运行时管理程序的输出、设置配置参数并指定输入文件,而无需任何编译时依赖。
我们可以通过多种方式向 Java 程序传递命令行参数。各种 IDE 支持在它们的执行配置中提供参数。而且,它们易于使用。当你运行代码时,可以在程序的配置文件中设置参数,或者直接在命令行上提供。