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

什么时候应该使用原语而不是包装对象?

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

什么时候应该使用原语而不是包装对象?

别忘了,由于为每次装箱而创建一个新的包装程序都是非常昂贵的,尤其是考虑到通常在一种方法的单个作用域中使用它,因此自动装箱将使用一组通用包装程序。

这实际上是flyweight设计模式的一种实现。当对一个众所周知的值进行装箱时,而不是创建一个新的包装实例,而是从一个池中获取一个预先创建的实例并返回它。

结果是: 仍然不建议使用自动装箱进行科学计算 。例如,代码d = a * b +
c使用a,b,c和d的Integer类,并且生成的代码是d.valueOf(a.intValue() b.intValue()+ c.intValue(
))。所有这些方法调用都有其自身的开销,因此
通常建议在需要将原语存储在collection中时使用自动装箱* 。

即使这样,如果你有一个 巨大的集合 整数包装为int,带来的开销可能意味着较长的执行时间,高达 20倍的时间
,因为在这篇文章中报道。


Jb添加了以下重要评论:

Wrapper.valueOf(primitive)也使用包装池。因此,相对于新的Integer(5),更喜欢Integer.valueOf(5)



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

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

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