为什么我们不能在Java中创建这样的数组:
int marks[5];
并在此声明后赋值?
任何人请解释术语或区别。
发布于 2012-02-01 22:14:20
这是因为Java中没有堆栈数组。以下是Java的等价物:
int[] marks = new int[5];
它看起来很像在C++中分配动态大小的数组。当然,您不必担心调用delete[]
,因为它是垃圾回收的。
发布于 2012-02-01 22:16:25
因为您引用的语法在堆栈上分配数组,而Java数组是对象,所有Java对象都分配在堆上(以最近的JVM优化为模,但这些都是隐式的)。
在没有手动内存管理的语言中,几乎必须这样做,因为当调用返回时,堆栈分配的内容就会消失,从而导致指针悬空,而Java的一个基本特性就是不允许这样的内容。
当然,有人可能会争辩说,Java应该使用堆栈分配语法来进行堆分配,但这会让任何了解C的人感到困惑--不好。
发布于 2012-02-01 22:14:22
int[] marks = new int[]{1, 2, 3};
https://stackoverflow.com/questions/9097181
复制相似问题