命令行参数
我们再回到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()去掉两端空格即可,当然也可输入“#”,然后再想办法去掉前面的#即可,即只要不单独输入即可。