繁体   English   中英

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

[英]Creation of Arrays in Java (The C++ Style)

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

int marks[5];

在此声明后分配值?

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

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

int[] marks = new int[5];

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

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

而且在没有手动内存管理的语言中几乎必须是那种方式,因为堆栈分配的东西在调用返回时消失,导致悬挂指针,而Java的基本特征是不允许这样的东西。

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

在Java中,数组的大小由创建它的表达式决定,例如:

int[] marks = new int[5];

要么

int[] marks = {1,2,3,4,5};

另请注意 ,尽管Java中允许使用语法int marks[] (Java有几个与C ++兼容的规则),但不推荐使用,语法int[] marks更具惯用性,因此更受欢迎。

int[] marks = new int[]{1, 2, 3};

因为数组是Object -s(继承自Object类)。 要创建对象,您必须使用new关键字。 (大多数时候)。
我认为new关键字背后的原因是表示变量是对动态分配的实例的引用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM