在Java中创建数组(C++样式)

2022-09-03 09:08:21

为什么我们不能在Java中制作这样的数组:

int marks[5];

并在此声明之后分配值?

任何人请解释术语或区别。


答案 1

这是因为 Java 中没有堆栈数组。下面是 Java 的等效项:

int[] marks = new int[5];

这看起来很像在C++中分配动态大小的数组。当然,您不必担心调用 a ,因为它是垃圾回收的。delete[]


答案 2

因为你引用的语法在堆栈上分配数组,而Java数组是对象,所有Java对象都分配在堆上(模最近的JVM优化,但这些都是隐式的)。

在没有手动内存管理的语言中,它几乎必须如此,因为堆栈分配的东西在调用返回时会消失,导致指针悬空,而Java的一个基本功能是不允许这样的东西。

当然,有人可能会争辩说Java应该使用堆栈分配语法来进行堆分配,但这会让任何了解C的人都感到困惑 - 不好。