在Java中,如果在编译时决定数组长度
中args
的参数长度是多少?
public static void main(String[] args) { ... }
决定运行时间?
答案 0 :(得分:1)
String [] args是main方法接受的参数。它可以是任何长度。您只需要在声明时定义数组的长度。即便如此,它也不一定是字面数字。它只需要固定长度。
String[] s = new String[variable]
变量variable
必须是整数,并且可以包含任何值。
答案 1 :(得分:1)
数组长度不是在编译时确定的,而是在运行时确定的。考虑:
String[] makeMeAStringArray(int size) {
return new String[size];
}
main
的arguments数组仅使用java
工具中的类似代码创建。
示例(live copy):
class Example
{
static String[] makeMeAStringArray(int size) {
return new String[size];
}
public static void main (String[] args) throws java.lang.Exception
{
int n = (int)(Math.random() * 100);
System.out.println("n = " + n);
String[] a = makeMeAStringArray(n);
System.out.println("a.length = " + a.length);
}
}
答案 2 :(得分:1)
创建数组时,它是固定长度的。但是,它不必是编译时常量长度。这是有效的,例如:
for (int i = 0; i < 10; ++i)
{
int[] arr = new int[i];
}
将数组传递给方法时:
public void foo(int[] arr) { //...
你没有指定尺寸。它只需要是一个数组。方法签名不强制执行该长度。
因此,这两个方面的组合意味着主要方法的声明方式并不特别。
答案 3 :(得分:0)
数组名称本质上是一个数组地址。您可以声明一个数组String[] args
,但在将其指向地址或键入String[] args = new String[N]
之前,它不会被初始化。
现在,当一个数组在参数中时,它没有初始化,因为它没有指向任何东西。但是,当您将数组作为参数传递给函数时,例如main(arguments)
,String [] args在运行时获取arguments数组的地址,然后运行main函数。
当您运行程序并输入一些输入时,Java将输入作为String数组,其中每个参数由输入中的空格分隔,然后将其提供给Java程序中的main函数。因此,字符串数组args []在开头没有初始化,但是“给定”参数字符串数组的地址,这些参数在运行时将作为输入。
希望这有帮助!