Java 命令行参数

Posted

技术标签:

【中文标题】Java 命令行参数【英文标题】:Java Command line arguments 【发布时间】:2010-10-17 11:59:48 【问题描述】:

我正在尝试检测是否输入了“a”作为第一个字符串参数。

【问题讨论】:

How to parse command line arguments in Java?的可能重复 【参考方案1】:

如果您打算将其扩展到单个 arg 之外,请使用 apache commons cli。

“Apache Commons CLI 库提供了一个 API,用于解析传递给程序的命令行选项。它还能够打印帮助消息,详细说明命令行工具可用的选项。”

Commons CLI 支持不同类型的选项:

类似 POSIX 的选项(即 tar -zxvf foo.tar.gz) 类似 GNU 的长选项(即 du --human-readable --max-depth=1) 类似 Java 的属性(即 java -Djava.awt.headless=true -Djava.net.useSystemProxies=true Foo) 附加值的短选项(即 gcc -O2 foo.c) 带有单个连字符的长选项(即 ant -projecthelp)

【讨论】:

【参考方案2】:
public class YourClass 
    public static void main(String[] args) 
        if (args.length > 0 && args[0].equals("a"))
            //...
        
    

【讨论】:

【参考方案3】:

每个 Java 程序都以

开头
public static void main(String[] args) 

main() 作为参数的String 类型的数组保存程序的命令行参数。如果用户运行你的程序为

$ java myProgram a

然后args[0] 将保存字符串“a”。

【讨论】:

【参考方案4】:

命令行参数在第一个String[]参数中传递给main(),例如

public static void main( String[] args ) 

在上面的示例中,args 包含所有命令行参数。

对所提出问题的简短回答是:

public static void main( String[] args ) 
    if( args.length > 0 && args[0].equals( "a" ) ) 
        // first argument is "a"
     else 
        // oh noes!?
    

【讨论】:

【参考方案5】:

命令行参数可以通过main方法的String[] args参数访问。

对于第一个参数,您可以检查args[0]

整个代码看起来像

public static void main(String[] args) 
    if ("a".equals(args[0])) 
         // do something
    

【讨论】:

【参考方案6】:

您的 main 方法有一个 String[] 参数。其中包含已传递给您的应用程序的参数(通常称为args,但这不是必需的)。

【讨论】:

【参考方案7】:

尝试传递值 a 并使用 equals 方法进行比较,如下所示:

public static void main(String str[]) 

    boolean b = str[0].equals("a");

    System.out.println(b);


点击此链接了解更多关于Command line argument in Java

【讨论】:

【参考方案8】:

正如其他人所说... .equals 方法是您所需要的。

万一你使用了类似的东西:

if(argv[0] == "a")

然后它不起作用,因为 == 比较两个对象的位置(物理相等)而不是内容(逻辑相等)。

由于命令行中的“a”和程序源代码中的“a”被分配在两个不同的位置,因此不能使用 ==。您必须使用 equals 方法来检查两个字符串是否具有相同的字符。

另一个注意事项... "a" == "a" 在许多情况下都可以使用,因为字符串在 Java 中是特殊的,但 99.99999999999999% 的时间您想使用 .equals。

【讨论】:

【参考方案9】:

命令行参数作为字符串存储在String数组String[] args that is passed tomain()`中。

java [program name] [arg1,arg2 ,..]

命令行参数是在运行程序时从命令提示符接受的输入。传递的参数可以是任何东西。存储在args[] 数组中。

//Display all command line information
         class ArgDemo
            public static void main(String args[])
            System.out.println("there are "+args.length+"command-line arguments.");
            for(int i=0;i<args.length;i++)
            System.out.println("args["+i+"]:"+args[i]);
    
    

例子:

java Argdemo one two

输出将是:

there are 2 command line arguments:
they are:
arg[0]:one
arg[1]:two

【讨论】:

在您的示例中,第一行 javastack.java. 是什么意思?我不确定It's used to accept input from the command prompt while running the program. 中的It 指的是什么,但顺序是1)解析命令2)设置参数3)运行程序。我不确定This essentially speeds up the program execution when the program depends on user input. 中的This 指的是什么,但参数传递 中没有任何内容可以加快程序执行速度。跨度>

以上是关于Java 命令行参数的主要内容,如果未能解决你的问题,请参考以下文章

java的-D命令行参数

jar包命令行密码参数

命令行参数是啥?

Java 的命令行 编译和运行参数 如:-cp 怎么理解?

allure命令行参数

Java 命令行参数