是。
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类型,则该 *** 作为对象相等
这符合装箱和拆箱的常识,只有在不匹配的情况下才这样做。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)