【问题标题】:What is the default formula for calculating the hashcode of an object [duplicate]计算对象哈希码的默认公式是什么[重复]
【发布时间】:2011-10-20 17:41:56
【问题描述】:

可能重复:
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 是代表对象的哈希码值。这是在哪里以及如何计算/得出的?

【问题讨论】:

    标签: java object


    【解决方案1】:

    根据documentation

    在合理可行的情况下,hashCode 方法定义为 类 Object 确实为不同的对象返回不同的整数。 (这 通常是通过转换的内部地址来实现 对象转换成整数,但这种实现技术不是 Java 编程语言所要求的。)

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 谢谢。我有兴趣了解对象哈希码的“默认”值。
      猜你喜欢
      • 2011-05-01
      • 2012-08-02
      • 2010-11-11
      • 2011-08-18
      • 1970-01-01
      • 2010-12-22
      • 1970-01-01
      • 2010-09-11
      相关资源
      最近更新 更多