0

这对你们来说可能很简单,但由于我是 Java 新手,所以我想知道下一部分到底发生了什么?

if (args.length > 0) {
    file = args[0];
}


public class DomTest1 {
    public static void main(String[] args) {
        String file = "test1.xml";
        if (args.length > 0) {
            file = args[0];
        }
    }
}
4

6 回答 6

9

这些称为命令行参数,您可以在程序中将其作为字符串数组获取。这是Oracle教程

Java 应用程序可以从命令行接受任意数量的参数。这允许用户在启动应用程序时指定配置信息。

用户在调用应用程序时输入命令行参数,并在要运行的类的名称之后指定它们。

因此下面的代码:

String file = "test1.xml";
if (args.length > 0) {
   file = args[0];
}

检查 的长度String[] args是否大于0,这意味着它检查是否输入了任何命令行参数或数组是否为空。如果输入了命令行参数,则分配file该数组的第一个元素,否则默认filetest1.xml. 您可以将课程运行为:

java DomTest1  someFileName.someExtension

启动应用程序时,运行时系统通过字符串数组将命令行参数传递给应用程序的 main 方法。在前面的示例中,命令行参数在包含单个字符串的数组中传递给DomTest1应用程序: “someFileName.someExtension”。

于 2013-07-02T10:31:38.890 回答
1

args 是一个命令行参数数组

启动应用程序时,运行时系统通过字符串数组将命令行参数传递给应用程序的 main 方法

where args一个数组,并且 if (args.length > 0) 是检查该数组是否为空的条件。

于 2013-07-02T10:31:43.327 回答
1

您在此处进行字符串引用并将值放入其中。你的第一个值是> test1.xml。它是一个文件的名称,但您将其作为字符串放入字符串(这意味着“test1.xml”)。然后从命令行参数中获取值。并通过命令行位置 0 覆盖字符串引用的值。因此,如果您不传递任何值,您的引用值将始终是命令行 0 位置值,那么它将为您提供 text1.xml

于 2013-07-02T10:50:04.503 回答
1

方法是java程序开始执行的main()地方。传递给main()方法的所有参数都是String的地方args[]。它基本上是一个字符串数组。变量名称可以更改为除 only 以外的其他名称args,您可以使用 Stringvar[]或 `String datas[] 或其他名称。

现在,进入if程序中的条件检查if (args.length > 0)。我将解释为什么arg.length会这样的根本原因。

当从命令行或类似终端执行 java 程序时,它将作为 java customName运行。假设您要传递给 java 程序的参数为 java customName param1 param2。参数与命令行一起传递。现在java中的解释器解释这些参数(即param1 param2)并将它们传递给程序的main()方法。这些参数存储在args[]字符串数组中。

现在在运行 java 程序 args[0] 和 args[1] 时将被允许。如果没有传递参数,则 args[] 的值将为空,并且仍将被标识为带有空参数的字符串数组对象(无元素) . 在这种情况下,args.length将等于 0。

于 2016-09-09T06:23:03.123 回答
0

该行正在检查是否在命令行中实际输入了参数。

如果有任何输入,第一个是文件名。

如果没有输入,test1.xml则为默认值。

于 2013-07-02T10:32:04.110 回答
0

args.length 值是 args 数组中的项目数。

如果您不传递任何命令行参数,您将始终得到“有 0 个命令行参数”。

这就是你检查的原因

if (args.length > 0) 

但是尝试像这样运行程序: java PrintArgs hello my name is mikki2 java PrintArgs 后面的词称为命令行参数,因为它们是从命令行传递给程序的参数

于 2013-07-02T10:36:35.173 回答