栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

`new`关键字有什么作用

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

`new`关键字有什么作用

在Java中,所有数组和对象都是在堆上分配的,因此从某种意义上讲,所有数组都是“数组对象”。在Java中,分配给堆栈的唯一内容是对象引用和原语。其他所有内容都是在堆中定义和分配的对象,包括数组,无论您使用哪种语法对其进行声明。(您的两个示例在最终结果中是等效的,有关如何实际分配和分配每个示例的更多信息,请参见JLS§10.3及其链接的部分。)

这与C / C 相反,在C / C 中,您可以显式控制堆栈和堆的分配。

请注意,关于短期对象分配/重新分配,Java的速度非常快。它具有基于世代的垃圾收集器,因此非常高效。因此,回答您的问题:

是否存在某些特定于“数组”的方法,除非它是“数组对象”,否则这些方法对数组不起作用?有什么我不能用普通数组做的“数组对象”吗?

没有像数组这样的东西不是对象,所以没有。这里 但是,这不会对原始阵列工作方式。采取的方法必须先将转换为才能

Object[]
接受。这是由于Java
5及更高版本中自动装箱的一些实现细节。
long[]``Long[]

Java VM是否必须清理用

new
操作符初始化的对象,而该对象通常是不需要的?

分配给它的任何东西

new
最终都必须被垃圾回收,那么就做任何 通常 不会做的事情而言?否。但是,请注意,在C / C
++,使用分配的数组
malloc
/
new
手段你也有
free
/
delete []
它,这是你
必须用Java做的,因为它会收回该阵列为您服务。

请注意,如果

long[]
在方法中声明了your
,并且从未将其存储在方法之外的引用中,则在方法调用结束时,系统将自动将其标记为垃圾回收。垃圾收集器将等待回收其空间,直到需要它为止,但您不必自己通过
delete[]
(或
delete
对象的析构函数)进行任何回收。

编辑: 承诺的一些参考:

  • 垃圾回收如何在Java中工作
  • Oracle Sun垃圾回收白皮书


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/452675.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号