用Java创建数组(C ++风格)

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (12)

为什么我们不能像这样在Java中创建数组:

int marks[5];

在声明后分配值?

任何人都请解释术语或差异。

提问于
用户回答回答于

这是因为Java中没有堆栈数组。这里是Java的等价物:

int[] marks = new int[5];

它看起来很像在C ++中分配动态大小的数组。当然你不必担心打电话delete[],因为这是垃圾收集。

用户回答回答于

因为您引用的语法将堆栈中的数组分配给它,并且Java数组是对象,并且所有Java对象都在堆上分配(模仿最近的JVM优化,但这些都是隐式的)。

而且在没有手动内存管理的情况下,语言必须这样做,因为当调用返回时,堆栈分配的东西消失,导致悬挂指针,而Java的一个基本特性并不是允许这样的东西。

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

扫码关注云+社区