2013-07-02 144 views
0

这对你们来说可能很简单,但是因为我是java的新手,所以我想知道 究竟是什么?Exacly(args.length> 0)是什么意思?

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]; 
     } 
    } 
} 

回答

9

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

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

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

因此下面的代码:

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

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

java DomTest1 someFileName.someExtension 

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

+0

感谢您的信息 – Bitopan

1

ARGS是Command Line arguments

当应用程序被启动的阵列,运行时系统通过字符串

的阵列将命令行参数到应用程序的main方法其中argsan arrayif (args.length > 0)是指示数组是空还是空的条件。

0

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

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

如果未输入任何内容,则默认为test1.xml

+0

基本..但对我很有帮助 – Bitopan

0

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

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

这就是为什么你检查

if (args.length > 0) 

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

1

您在此处创建字符串引用并将值放入其中。 你的第一个值是> test1.xml。它是一个文件的名称,但是您将字符串 作为字符串(它表示“test1.xml”)。然后从命令行参数中获取值。和0 所以你参考值将总是命令行的位置,您的字符串引用的首要价值命令行0的位置值,如果你不传递任何值,那么它会给你text1.xml

0

main()的方法是其中java程序的执行开始。所有传递给main()方法的参数都是String args[]。它基本上是一个String数组。变量名称可以更改为其他内容,而不是仅使用args,您可以使用字符串var[]或`数据字符串[]或其他名称。

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

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

现在运行java程序args [0]和args [1]将被允许。如果没有参数被传递,那么args []的值将为null,并且仍然会被标识为String参数为null的参数(没有元素)。 在这种情况下,args.length将等于0.