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

用Java创建数组(C+;+;风格),java,c++,arrays,Java,C++,Arrays,为什么我们不能用Java制作如下数组: int marks[5]; 并在此声明之后赋值 任何人请解释术语或区别。因为数组是对象-s(继承自对象类)。要创建对象,必须使用new关键字。(大部分时间)。 我认为new关键字背后的原因是表示变量是对动态分配实例的引用 这是因为Java中没有堆栈数组。以下是Java等价物: int[] marks = new int[5]; 它看起来很像在C++中分配动态大小的数组。当然,您不必担心调用delete[],因为它是垃圾收集的。因为您引用的语法在堆栈上分

为什么我们不能用Java制作如下数组:

int marks[5];
并在此声明之后赋值


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

因为数组是
对象
-s(继承自
对象
类)。要创建对象,必须使用
new
关键字。(大部分时间)。

我认为
new
关键字背后的原因是表示变量是对动态分配实例的引用

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

int[] marks = new int[5];

它看起来很像在C++中分配动态大小的数组。当然,您不必担心调用

delete[]
,因为它是垃圾收集的。

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

int[] marks = new int[]{1, 2, 3};
在一种没有手动内存管理的语言中,这几乎是必须的,因为当调用返回时,堆栈分配的东西消失了,导致指针悬空,Java的一个基本特性是不允许这样的东西


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

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

int[] marks = new int[5];



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

您尝试过吗?java的C++ C++语言?“结果是什么?你能问出你的问题吗?”你好像在问“为什么Java不使用和C++完全相同的语法?”这可能只是我,这个问题对于那些知道C++和java而不是java的人来说更有意义。@ TiCyDROMA:他可能尝试过,结果是“令牌上的语法错误”5,删除这个标记。.好的…现在拿一些…谢谢是的我忘了取下5。
int[] marks = {1,2,3,4,5};