在Java中创建数组(C++样式)
为什么我们不能在Java中制作这样的数组:
int marks[5];
并在此声明之后分配值?
任何人请解释术语或区别。
为什么我们不能在Java中制作这样的数组:
int marks[5];
并在此声明之后分配值?
任何人请解释术语或区别。
这是因为 Java 中没有堆栈数组。下面是 Java 的等效项:
int[] marks = new int[5];
这看起来很像在C++中分配动态大小的数组。当然,您不必担心调用 a ,因为它是垃圾回收的。delete[]
因为你引用的语法在堆栈上分配数组,而Java数组是对象,所有Java对象都分配在堆上(模最近的JVM优化,但这些都是隐式的)。
在没有手动内存管理的语言中,它几乎必须如此,因为堆栈分配的东西在调用返回时会消失,导致指针悬空,而Java的一个基本功能是不允许这样的东西。
当然,有人可能会争辩说Java应该使用堆栈分配语法来进行堆分配,但这会让任何了解C的人都感到困惑 - 不好。