Java中的命令行参数使用

498 阅读1分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 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 文本框:

image.png

然后我们直接点击 OK 并重新运行我们的应用程序就可以了

总结

Java中的命令行参数是在程序执行时传递的,JVM将它们提供给Java程序main方法中的args字符串。命令行参数让应用程序的行为可根据我们的需要灵活配置。

\