是否可以保证Java中新的Integer(i)== i?

是否可以保证Java中新的Integer(i)== i?,第1张

是否可以保证Java中新的Integer(i)== i?

是。
JLS第5.6.2节指定了二进制数值提升的规则。部分:

当运算符将二进制数值提升应用于一对 *** 作数时,每个 *** 作数必须表示一个可转换为数字类型的值,以下规则适用,以便根据需要使用加宽转换(第5.1.2节)来转换 *** 作数:

如果任何一个 *** 作数是引用类型,则执行装箱转换(第5.1.8节)。

二进制数值提升适用于几种数值运算符,包括“数值相等运算符==和!=”。

JLS§15.21.1(数字等于运算符==和!=)指定:

如果相等运算符的 *** 作数都是数字类型,或者一个是数字类型,而另一个是可转换(第5.1.8节)为数字类型,则对 *** 作数(第5.6.2节)执行二进制数字提升。

相反,JLS§15.21.3(参考相等运算符==和!=)提供:

如果相等运算符的 *** 作数均为引用类型或null类型,则该 *** 作为对象相等

这符合装箱和拆箱的常识,只有在不匹配的情况下才这样做。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5586403.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-14

发表评论

登录后才能评论

评论列表(0条)

保存