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 to
main()`中。
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 命令行参数的主要内容,如果未能解决你的问题,请参考以下文章