首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Java中创建数组( C++风格)

在Java中创建数组( C++风格)
EN

Stack Overflow用户
提问于 2012-02-01 22:10:19
回答 4查看 1.9K关注 0票数 15

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

代码语言:javascript
复制
int marks[5];

并在此声明后赋值?

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

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-02-01 22:14:20

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

代码语言:javascript
复制
int[] marks = new int[5];

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

票数 20
EN

Stack Overflow用户

发布于 2012-02-01 22:16:25

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

在没有手动内存管理的语言中,几乎必须这样做,因为当调用返回时,堆栈分配的内容就会消失,从而导致指针悬空,而Java的一个基本特性就是不允许这样的内容。

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

票数 13
EN

Stack Overflow用户

发布于 2012-02-01 22:14:22

代码语言:javascript
复制
int[] marks = new int[]{1, 2, 3};
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9097181

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档