为什么我们不能像这样在Java中创建数组:
int marks[5];
Run Code Online (Sandbox Code Playgroud)
在此声明后分配值?
任何人请解释术语或差异.
das*_*ght 20
这是因为Java中没有堆栈数组.这是Java等价物:
int[] marks = new int[5];
Run Code Online (Sandbox Code Playgroud)
它看起来很像在C++中分配动态大小的数组.当然你不必担心调用a delete[],因为它是垃圾收集的.
Mic*_*rdt 13
因为您引用的语法在堆栈上分配数组,并且Java数组是对象,并且所有Java对象都在堆上分配(模数最近的JVM优化,但这些是隐式的).
而且在没有手动内存管理的语言中几乎必须是那种方式,因为堆栈分配的东西在调用返回时消失,导致悬挂指针,而Java的基本特征是不允许这样的东西.
当然有人可能会争辩说Java应该使用堆栈分配语法进行堆分配,但这会让任何知道C的人感到困惑 - 不好.
在Java中,数组的大小由创建它的表达式决定,例如:
int[] marks = new int[5];
Run Code Online (Sandbox Code Playgroud)
要么
int[] marks = {1,2,3,4,5};
Run Code Online (Sandbox Code Playgroud)
另请注意,尽管int marks[]Java中允许使用该语法(Java有几个与C++兼容的规则),但不推荐使用,语法int[] marks更加惯用,因此更受欢迎.
| 归档时间: |
|
| 查看次数: |
1203 次 |
| 最近记录: |