gpt4 book ai didi

java - 我什么时候应该使用基元而不是包装对象?

转载 作者:太空狗 更新时间:2023-10-29 23:00:41 25 4
gpt4 key购买 nike

实际上 here类似的话题,实用值(value)不大。据我所知,原语性能更好,应该在任何地方使用,除了需要与对象相关的功能(例如 null 检查)的情况。对吧?

最佳答案

不要忘记,因为为每个装箱事件创建一个新的包装器是非常昂贵的,特别是考虑到它通常在一个方法的单个范围内使用,Autoboxing使用一组通用包装器。

这实际上是 flyweight design pattern 的一个实现.当为众所周知的值发生装箱时,不是创建新的包装器实例,而是从池中获取并返回预先创建的实例。

一个结果是:仍然不推荐使用自动装箱进行科学计算。例如,代码 d = a * b + c 为 a、b、c 和 d 使用 Integer 类,生成的代码为 d.valueOf(a.intValue() * b.intValue() + c.intValue( )).所有这些方法调用都有自己的开销,因此通常建议在需要将基元存储在集合中时使用自动装箱

即便如此,如果您有一个庞大的 Integer wrapping int 集合,开销可能意味着更长的执行时间,最多20 倍,如reported in this article .


Jb 添加了这条重要评论:

Also Wrapper.valueOf(primitive) uses pool of wrappers. So prefer Integer.valueOf(5) to new Integer(5)

关于java - 我什么时候应该使用基元而不是包装对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/239560/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com