计算对象哈希码的默认公式是什么

时间:2011-10-20 17:41:57

标签: java object

  

可能重复:
  what is an objects hashcode

当我运行此示例程序时

public class ZiggyTest {
    public static void main (String[] args){
        Object now = new Object();
        System.out.println(now);
    }
}

输出

java.lang.Object@3e25a5

我知道数字3e25a5是表示对象的哈希码值。计算/推导的位置和方式如何?

2 个答案:

答案 0 :(得分:1)

根据documentation

  

尽可能合理实用,由hashCode方法定义   class Object确实为不同的对象返回不同的整数。 (这个   通常通过转换内部地址来实现   将对象转换为整数,但这种实现技术不是   Java编程语言所要求的。)

请注意,相应地,确切的公式不是由Java定义的,并且可能因JVM实现和JVM版本而异。

答案 1 :(得分:1)

没有正式的hashCode函数。允许实现创建对该实现有意义的任何hashCode。哎呀,如果有意义的话,不同类型的功能可能会有所不同。如果您正在使用Eclipse,请从菜单中转到“Source - > Generate hashCode()和equals()”,并探索如何配置hashCode函数。基本上,您可以在为此类构建hashCode时决定要使用的成员(如果有)。然后它将一些素数与一些质数一起修补。这是一种有趣的方法。