对于方法中定义的其他字符串数组,需要使用固定维度对其进行初始化才能使用。
好吧,这就是在方法String...
参数的情况下发生的情况main
。它使用您作为命令行参数传递的固定数量的参数进行初始化。但在那之后,你不能向数组中添加任何东西,因为大小现在是固定的。如果你不传递任何参数,它的长度将是0
.
请注意,参数类型实际上是 varargs,而不是 a String[]
,尽管在内部,前者无论如何都会转换为后者。使用 varargs 获得的好处是,您可以传递可变数量的参数,而无需显式创建数组。
另外,是否可以创建一个无限大小的字符串,如 String args[]?
不,数组的大小不是无限的。由于 的类型args.length
是int
. 逻辑上元素的最大数量可以是2 ^ 32 - 1
。但实际上并非如此。在此之前内存可能会溢出很多。
另请注意,由于我们正在谈论方法形式参数,因此仍然存在最大方法大小的限制。根据 JVM,方法的最大大小限制为 65536 字节。
例如:
public static void test(String... names) {
System.out.println("Names array length: " + names.length);
names[names.length] = "xyz"; // This would fail as expected.
names = new String[10]; // this however you can do. Re-assign a new array to names
}
public static void main(String... args) {
test("a", "b", "c"); // pass 3 arguments
test("a", "b"); // pass 2 arguments
}