一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第6天,点击查看活动详情。
使用参数从命令行运行应用程序是很常见的,特别是在服务器端。
在一些情况下应用程序在每次运行时都执行有不同的配置,我们希望以灵活一些的方式完成,而不是每次去改代码。
命令行参数运行Java程序是个很方便的办法。
在 Java 中访问命令行参数
main方法是 Java 应用程序的入口点,因此JVM通过其参数传递命令行参数。
传统方法是使用String数组:
public static void main(String[] args) {
}
Java引入了varargs,我们可以用一个String vararg来定义我们的main。
public static void main(String... args) {
}
这两种是相同的,我们使用默认的方式即可,主方法的方法参数包含命令行参数,其顺序与我们在执行时传递的参数相同。如果我们想知道传入了多少个参数,只需要检查数组的长度。
例如,我们可以在标准输出上打印参数的数量和它们的值。
public static void main(String[] args) {
System.out.println("参数长度: " + args.length);
for (int i = 0; i < args.length; i++) {
System.out.println("参数 " + i + ": " + args[i]);
}
}
传递命令行参数
现在有了一个处理命令行参数的应用程序,我们可以来尝试一下。
Java传入参数有以下几种方式
命令行
最明显的方法是命令行。让我们假设我们已经编译了Test类,其中有我们的main方法。
然后我们可以用下面的命令来运行它。
不带参
javac Test.java
java Test
输出:
参数长度: 0
带参
java Test 1 2
输出:
参数长度: 2
参数 0: 1
参数 1: 2
我们一般把程序打成一个jar包发布,而不是作为一堆.class文件。
现在我们把代码打包在Test.jar中,并把com.test.Test作为主类。
现在我们可以用下面的方法运行它,不需要参数。
java -jar Test.jar
输出:
java -jar Test.jar 1 2
参数长度: 2
参数 0: 1
参数 1: 2
注意,Java将类名或jar文件名之后传递的每一个参数都视为应用程序的参数。在这之前传递的所有参数都是JVM本身的参数。
开发工具中使用
IDEA
右键单击 main 方法,然后选择 Run ‘Test.main()’:
这将运行我们的程序,但它也会将其添加到运行列表中以进行进一步配置。
因此,要配置参数,我们应该选择 Run > Edit Configurations... 并编辑 Program arguments 文本框:
然后我们直接点击 OK 并重新运行我们的应用程序就可以了
总结
Java中的命令行参数是在程序执行时传递的,JVM将它们提供给Java程序main方法中的args字符串。命令行参数让应用程序的行为可根据我们的需要灵活配置。
\