Java命令行参数
我试图检测是否input“a”作为第一个string参数。
public class YourClass { public static void main(String[] args) { if (args.length > 0 && args[0].equals("a")){ //... } } } 如果您打算扩展过去的单一参数,请使用apache commons cli 。
“Apache Commons CLI库提供了一个用于parsing传递给程序的命令行选项的API,还可以打印帮助消息,详细说明命令行工具的可用选项。
Commons CLI支持不同types的选项:
- 像选项(即。tar -zxvf foo.tar.gz)
- GNU像长期选项(即du – 人可读 – 最大深度= 1)
- Java的属性(即.java -Djava.awt.headless = true -Djava.net.useSystemProxies = true Foo)
- 带附加值的简短选项(即gcc -O2 foo.c)
- 长连字符(即ant -projecthelp)
每个Java程序都以
 public static void main(String[] args) { 
  main()作为参数使用的Stringtypes数组将参数保存到程序的命令行参数中。 如果用户运行你的程序 
 $ java myProgram a 
 那么args[0]将保存string“a”。 
 命令行参数在第一个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!? } } 
 命令行参数可以通过main方法的String[] args参数访问。 
 对于第一个参数,你可以检查args[0] 
整个代码看起来像
 public static void main(String[] args) { if ("a".equals(args[0])) { // do something } } 
 你的main方法有一个String[]参数。 包含已传递给应用程序的参数(通常称为args ,但这不是必需的)。 
尝试传递值a,并使用像这样的equals方法进行比较:
 public static void main(String str[]) { boolean b = str[0].equals("a"); System.out.println(b); } 
按照此链接了解更多关于Java中的命令行参数
正如其他人所说… .equals方法是你所需要的。
在不经意的情况下,你使用了类似于:
 if(argv[0] == "a") 
那么它不起作用,因为==比较两个对象的位置(物理相等)而不是内容(逻辑相等)。
由于命令行中的“a”和程序源代码中的“a”分配在两个不同的地方,因此不能使用==。 你必须使用equals方法来检查两个string是否具有相同的字符。
另一个说明…“a”==“a”将在很多情况下工作,因为string在Java中是特殊的,但99.99999999999999%的时间要使用.equals。
 命令行参数作为string存储在传递给main()的String数组( String[] args main() 。 命令行参数是在执行时直接在命令行上跟随程序名称的信息。 
 命令行参数是运行程序时从命令提示符处接受的input。 通过的参数可以是任何东西。 它存储在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]); } } 
 如果ARgDemo是这样执行的话: 
 java Argdemo one two 
输出将是:
 there are 2 command line arguments: they are: arg[0]:one arg[1]:two 
这里有两个命令行参数