java中main方法里面的参数都传了一些啥东西??
有时候你深入研究一下,模棱两可的话,面试的时候容易抓瞎,对于程序员来讲,弄懂底层的逻辑对于语言的学习是很有帮助的;> 这也难怪大厂基本都会问道底层源码的东西—
先来看代码–
package method;
public class MainlyM {
public static void main(String[] args) {
System.out.println(args.length);
}
}
既然main()方法中穿的是一个String类型的数组,那么我们尝试看一下这个数组中都有些什么,—直接打印args.length
我们会发现该数组长度为0,但不是null,正常情况下声明一个数组而不为该数组进行赋值,我们会发现 空指向异常
public class TestDTM {
public static void main(String[] args) {
int array[]=null;
System.out.println(array.length);
}
}
D:\>javac TestDTM.java
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
D:\>java TestDTM
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
Exception in thread "main" java.lang.NullPointerException: Cannot read the array length because "<lo
cal1>" is null
at TestDTM.main(TestDTM.java:10)
注意int array []= new array[0];与int array[]=null;是有本质区别的;
public class TestDTM {
public static void main(String[] args) {
int array[]=new int[0];
System.out.println(array.length);
}
}
D:\>javac TestDTM.java
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
D:\>java TestDTM
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
0
所以在我们向main()中传入参数时候–
public class TestDTM {
public static void main(String[] args) {
for(String str:args)
System.out.println(str);
System.out.println(args.length);
}
}
D:\>javac TestDTM.java
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
D:\>java TestDTM aa bb ccc ddde f "q q"
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
aa
bb
ccc
ddde
f
q q
6
默认参数是以空格进行断开的,如果参数带空格,那么要以引号将其包围;