命令行参数

命令行参数

我们再回到Hello World程序:

public class HelloWorld {
 public static void main(String[] args){
  System.out.println("Hello World!");
  }
}

老师要求理解public static void main(String[] args),
我上网学了有关解释:

public static void main(String[] args)

  • public:权限修饰符,权限最大。

  • static:随着MianDemo类的加载而加载,消失而消失。

  • void: 没有返回值

  • main: 函数名,jvm识别的特殊函数名

  • (String[]args):定义了一个字符串数组参数

测试程序CommandLine.java:

public class CommandLine {
 public static void main(String [] args) {
   for(String arg : args){
       System.out.println(arg);
  }
 }
}

java CommandLine运行时,没有输出。

我们java CommandLine 1 2 3运行时,输出如下图,此时 args[0]"1", args[1]"2", args[2]=="3",args.lenth == 3。
运行结果图:

如果在IDEA中传参数

  Run->Edit Configuration...

学习中遇到的问题

1.在学习当中遇到i的赋值问题,如下:

 public class Args {
 public static void main(String[] args) {
 for(int i = 1; i < args.length; i++) {
  System.out.print(args[i]);
       }
    }
 }

在命令行中执行 :Java C D E F
我将其分成四种情况的输出

1.  CDEF   
2.  DEF   
3.  EF  
4.  F 

乍一看我就觉得应该是DEF,因为for循环从1开始,C是args[0],所以打印DEF
运行之后打印的却是EF仔细想了一下,java C是执行程序,D才是args[0]

于是我自己扩展了一下关于Java的命令行参数

Java命令行的参数

1、 什么是命令行的参数?

如: java Test1 365 156 "China"
注意:(以上Test1必须为主类,否则不能运行)

2、命令行的参数由谁来接收?

一个程序开始于对函数main()的调用。在这样做的时候,有两个参数被送给main(),其中的一个描述了命令行参数的个数,通常称为argc;另一个是命令行参数的数组,通常称为argv。(C语言中,标准的main函数就是这样的)

命令行参数都是字符串,所以argv的类型是char* [argc+1]。该程序的名字也作为argv[0]传进来,

所以argc的值至少是1。这个参数的表总以0结束,也就是说,argv[argc]==0。[1]

3、在命令行给定参数时,应注意什么?

命令行的参数以空格隔开。但是,若命令行的参数本身包含空格时,则该参数必须用一对双引号括起来。

如: java Test1 365 156 China "Beijing of China"

4、命令行中输入(表示乘法)的方法:若直接在命令行中输入(乘法),系统会处理成当前路径名的几个字符串,若要表示乘法,应该输入“ ”或“ * ”,由args取得该字符串后,再用trim()去掉两端空格即可,当然也可输入“#”,然后再想办法去掉前面的#即可,即只要不单独输入即可。

posted on 2017-06-09 22:03  吕宇轩  阅读(191)  评论(0编辑  收藏  举报