最近我在某处读到,如果在运行时给出了一个数组维度,那么这样的程序可以被解释但不能被编译。
就像在下面的 C++ 代码中一样
int m;
cin >> m;
int a[m];
我已经使用 turbo C++ 编译了它,它给了我一个错误,即数组声明需要一个常量表达式。(预期)
但在 Java 的情况下
int m;
Scanner input = new Scanner(System.in);
m = input.nextInt();
int[] a = new int[m];
它没有给出任何错误。(我猜是因为它被解释为未编译)
但为什么会有这种差异?