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

Double.doubleToLongBits(x)的含义

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

Double.doubleToLongBits(x)的含义

简短答案:Eclipse使用
Double.doubleToLongBits,
因为这就是Double.equals的作用:

结果是,

true
当且仅当参数不是,
null
并且是一个Double对象,该对象表示与该对象表示的
doubl
值相同的e
double
。为此,
double
当且仅当该方法应用于每个值时
doubleToLongBits(double)
返回相同的
long
值时,两个值才被视为相同。

长答案:JLS指定Double.equals和==之间的一些区别。对于JLS
4.2.3
和JLS
15.21.1中指定的一个区别:

正零和负零比较相等;因此,表达式的结果

0.0==-0.0
true
和的结果
0.0>-0.0
false
。但是其他运算可以区分正零和负零;例如,
1.0/0.0
具有正无穷大的值,而
1.0/-0.0
具有负无穷大的值。

另一个方面

NaN

如果任一操作数为NaN,则结果为

==
为,
false
但结果
!=
true

确实,检验

x!=x
true
当且仅当x的值为NaN时。

如您所见, 当在数学表和哈希表中使用 两个双精度值时

==
它们可能会比较, 但实际上对应于不同的行为
。因此,在编写生成的相等方法时,Eclipse假定两个双精度仅在且仅当可以对它们执行的所有操作都相同,或者(等效地)自动装箱并与其
equals
方法进行比较时才相等。如果在
double
和之间切换,这一点尤其重要
Double
-相等属性在那里差异会特别令人意外。

当然,您可以自由地摆脱这种假设:不管这是一个好主意,您都可以将特殊情况分配给许多可能的NaN表示形式,在这种情况下,这

Double.doubleToRawLongBits()
将是您
equals
hashCode
方法更好的匹配方式。同样,您的用例可能会将+0.0和-0.0的对象视为等效对象,并保证不可能使用NaN值,在这种情况下,原始
==
比较可能会更好
equals
(但是在这一点上,模拟相同的条件
hashCode
变得很困难)。



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

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

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