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

获取一个 double 值或 Double 对象的哈希值

定义

public int hashCode()

public static int hashCode(double value) //1.8 起出现

哈希值结果是长整数位表示的两半的异或, 与方法 doubleToLongBits(double) 产生的完全一致, 该 Double 对象表示的原始双精度值. 也就是说, 哈希值是表达式的值:

(int)(v^(v>>>32))

其中 v 定义为:

long v = Double.doubleToLongBits(this.doubleValue());

参数

参数类型参数名称参数描述
doublevalue要转换成哈希的值

返回值

返回double值或Double对象的哈希值

说明

hashCode() 方法实现了 ObjecthashCode() 方法.

示例

获取 Double 或 double 的哈希值的示例

package com.yi21.Double;

public class Yi21DoubleHashCode {

    public static void main(String[] args) {
        
        Double d1 = 0.0;
        System.out.println(d1 + " 的哈希值: " + d1.hashCode());
        double d2 = 0.0;
        System.out.println(d2 + " 的哈希值: " + Double.hashCode(d2));
        
        d1 = -0.0;
        System.out.println(d1 + " 的哈希值: " + d1.hashCode());
        d2 = -0.0;
        System.out.println(d2 + " 的哈希值: " + Double.hashCode(d2));
        
        d1 = 1.0;
        System.out.println(d1 + " 的哈希值: " + d1.hashCode());
        d2 = 1.0;
        System.out.println(d2 + " 的哈希值: " + Double.hashCode(d2));
        
        d1 = Double.NaN;
        System.out.println(d1 + " 的哈希值: " + d1.hashCode());
        d2 = Double.NaN;
        System.out.println(d2 + " 的哈希值: " + Double.hashCode(d2));

    }

}

执行结果为 :

0.0 的哈希值: 0
0.0 的哈希值: 0
-0.0 的哈希值: -2147483648
-0.0 的哈希值: -2147483648
1.0 的哈希值: 1072693248
1.0 的哈希值: 1072693248
NaN 的哈希值: 2146959360
NaN 的哈希值: 2146959360