究竟是什么(args.length> 0)的意思?

时间:2013-07-02 10:30:55

标签: java main

对于你们这可能很简单但是因为我是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];
        }
    }
}

6 个答案:

答案 0 :(得分:9)

这些被称为命令行参数,您可以在程序中将其作为String数组获取。这是Oracle tutorial

  

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

     

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

因此下面的代码:

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

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

java DomTest1  someFileName.someExtension
  

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

答案 1 :(得分:1)

args是Command Line arguments

的数组
  

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

argsan arrayif (args.length > 0)是条件是否为空的条件。

答案 2 :(得分:1)

您在这里制作字符串引用并将值放入其中。 你的第一个价值是> test1.xml。它是文件的名称,但您将放入String as String(表示“test1.xml”)。然后从命令行参数中获取值。并通过命令行位置0覆盖您的字符串引用值。 所以你引用值将始终是命令行0位置值,如果你没有传递任何值,那么它会给你text1.xml

答案 3 :(得分:1)

main()方法是java程序的执行开始。传递给main()方法的所有参数都是String args[]。它基本上是一个String数组。除了仅使用args之外,变量名可以更改为其他名称,您可以使用String var[]或`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 []的值将为null,并且仍将被标识为具有null参数的String数组对象(没有元素)。 在这种情况下,args.length将等于0.

答案 4 :(得分:0)

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

如果输入任何内容,则第一个是文件名。

如果未输入,则test1.xml是默认值。

答案 5 :(得分:0)

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

如果不传递命令行参数,则总会得到“有0个命令行参数”。

这就是你检查的原因

if (args.length > 0) 

但是尝试运行这样的程序:java PrintArgs你好我的名字是mikki2 java PrintArgs之后的单词被称为命令行参数,因为它们是从命令行传递给你的程序的参数