如果没有提供命令行参数,用于接受String args[]
中的命令行参数的参数main()
是否会产生影响。
是吗:
Java遇到String args[]
时会做什么?
更新: 想问一个相关的问题:如果没有提供cmdline args,Will String args []是空的还是null?
答案 0 :(得分:1)
这取决于。如果传递一些命令行参数,则会创建String对象。 String args[]
只是对表对象的引用。如果没有提供参数,args
将为空。 args
中的更多信息只能包含参数。在C / C ++中,例如你也会有例如应用名称。 Java是不同的。在此处阅读有关命令行参数的更多信息:http://docs.oracle.com/javase/tutorial/essential/environment/cmdLineArgs.html
答案 1 :(得分:1)
此代码在堆栈上创建一个String[]
引用,在堆上创建一个String[]
对象(空数组)。没有创建String
个对象。
答案 2 :(得分:1)
String []是一个对象,空的大约是16个字节。
这很有帮助。我怎么能自己计算呢?
public static long memoryUsed() {
final Runtime rt = Runtime.getRuntime();
return rt.totalMemory() - rt.freeMemory();
}
public static void main(String... args) {
long before = memoryUsed();
String[] arr = { };
long after = memoryUsed();
if(before == after) throw new AssertionError("you need to turn off the TLAB with -XX:-UseTLAB");
System.out.printf("The String[] used %,d bytes of memory%n", (after - before));
}
打印
The String[] used 16 bytes of memory
注意:此打印用于创建对象的内存量。如果创建临时对象,这可能会超过保留的数量。
答案 3 :(得分:0)
如果在没有命令行参数的情况下调用程序,args[]
为空,则不会创建String
。那么你将有一个空数组。