我只是浏览了一本旧教科书,发现这篇文章用Java定义数组:
一维数组是由结构化复合数据类型组成的 一个有限的,固定的有序齐次元素集合 哪个有直接访问权限。有限表明有最后一个 元件。固定大小意味着必须知道数组的大小 编译时,但并不意味着数组中的所有插槽 必须包含有意义的价值观。
我对数组有基本的了解,并且我很乐意在每天的任务中使用它们,但是我很困惑,在编译时必须知道数组必须的大小。
一个非常简单的Java程序演示了可以在运行时使用可变大小实例化数组:
import java.util.Scanner;
public class test
{
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
System.out.print("Enter a number: ");
int size = scan.nextInt();
int[] array = new int[size];
System.out.println("You just create an array of size " + array.length);
}
}
这会编译,执行并到达结尾而不会出错。
是什么给出了?
答案 0 :(得分:3)
这是一个措辞很差的段落,但如果你松散地解释它,那是正确的。
在您的示例中,在编译时已知数组的大小。大小为size
。
你用“静态”或“常量”来解释“在编译时已知”,这是可以理解的。当然,正如我们所知,JVM根据size
的值动态分配内存。
作者可能试图区分数组和类似ArrayList
之类的内容,其中不必在初始化时指定维度。
答案 1 :(得分:0)
这里的数组大小是“大小”。编译器并不关心“大小”中可能存在的内容。内存在编译期间未分配,在运行时分配。在编译期间,不直接检查变量以获取它们的值。它只在运行时才能看到编译器看到“size”中存在的内容并分配内存。