Java Double.equals() 方法及代码示例

将此对象与指定对象进行比较

定义

public boolean equals(Object obj)

参数

参数类型参数名称参数描述
Objectobj要比较的对象

返回值

如果和对象相同则返回 true, 否则返回 false

说明

当且仅当参数不为 null 且是一个 Double 对象, 该对象表示一个与该对象表示的双精度具有相同值的双精度时, 结果才为 true. 因此, 当且仅当方法 doubleToLongBits(double) 在应用于每个 Double 时返回相同的 long 值时, 才认为两个 Double 的值相同.

注意事项

在大多数情况下, 对于 Double 类的两个实例 d1 和 d2, d1.equals(d2) 的值当且仅当:

d1.doubleValue() == d2.doubleValue()

也有值 true.但是有例外:

  • 如果 d1d2 都表示 Double.NaN, 则 equals() 方法返回 true, 即使 Double.NaN==Double.NaN 的值为 false.
  • 如果 d1 表示 +0.0d2 表示 -0.0, 或者反之, 则相等测试的值为 false, 即使 +0.0==-0.0 的值为 true.

这个定义允许哈希计算正常运行.

示例

判断两个 Double 是否相等的示例

package com.yi21.Double;

public class Yi21DoubleEquals {

    public static void main(String[] args) {
        
        Double d1 = 0.0;
        Double d2 = -0.0;
        System.out.println("d1 和 d2 是否相等? " + d1.equals(d2));
        System.out.println("d1 和 d2 是否浮点值相等? " + (d1.doubleValue() == d2.doubleValue()));

        d1 = Double.NaN;
        d2 = Double.NaN;
        System.out.println("d1 和 d2 是否相等? " + d1.equals(d2));
        System.out.println("d1 和 d2 是否浮点值相等? " + (d1.doubleValue() == d2.doubleValue()));

        d1 = 1.0;
        d2 = 1.0;
        System.out.println("d1 和 d2 是否相等? " + d1.equals(d2));
        System.out.println("d1 和 d2 是否浮点值相等? " + (d1.doubleValue() == d2.doubleValue()));

    }

}

执行结果为 :

d1 和 d2 是否相等? false
d1 和 d2 是否浮点值相等? true
d1 和 d2 是否相等? true
d1 和 d2 是否浮点值相等? false
d1 和 d2 是否相等? true
d1 和 d2 是否浮点值相等? true