不服輸的麻雀 2021-08-18 10:44 采纳率: 66.7%
浏览 51

关于对象的初始化,求答疑?


List<Long> insertLabelIds = null;
List<Long> insertLabelIds = new ArrayList();

以上代码, 都是为了初始化一个对象,之后赋值,都是可行的。
但是我感觉这个东西还是有区别的,希望同僚可以从JVM的角度、以及代码层面解答一下 这两种初始化的优劣。
哪种更好,或者每一个使用的场景。

个人的理解:
当给这个对象申明为null的时候,List insertLabelIds = null;
JVM会去寻找内存空间中的这个对象 并赋值为null,然后会有一个引用指向这个对象,但是如果没有内存空间中没有这个对象呢?
还有寻找这个对象的引用的这个过程 算是寻址吗?
List insertLabelIds = new ArrayList();
这一种 JVM是通过new关键字进行空间开辟的,所以这个初始化会有一定的性能问题,毕竟一旦开辟空间了 就会有寻址 开辟空间 过程长。
所以 我认为两者都有寻址的动作 只不过是这个对象创建的时机不同
一个是提前声明 赋值 另外一个申明 引用。

  • 写回答

5条回答 默认 最新

  • 全栈极简 博客专家认证 2021-08-18 10:47
    关注

    主要是赋值为null,此时不分配内存空间,只有new才分配内存空间。

    评论

报告相同问题?

问题事件

  • 修改了问题 8月18日
  • 修改了问题 8月18日
  • 创建了问题 8月18日

悬赏问题

  • ¥15 Pyqt 如何正确的关掉Qthread,并且释放其中的锁?
  • ¥30 网站服务器通过node.js部署了一个项目!前端访问失败
  • ¥15 WPS访问权限不足怎么解决
  • ¥15 java幂等控制问题
  • ¥15 海湾GST-DJ-N500
  • ¥15 氧化掩蔽层与注入条件关系
  • ¥15 Django DRF 如何反序列化得到Python对象类型数据
  • ¥15 多数据源与Hystrix的冲突
  • ¥15 如何在线硕士了解,广告太多,希望有真实接触过的人回答下?(标签-学习|关键词-在线硕士)
  • ¥15 zabbix6.4与frp如何进行联动