当我运行此示例程序时
public class ZiggyTest {
public static void main (String[] args){
Object now = new Object();
System.out.println(now);
}
}
输出
java.lang.Object@3e25a5
我知道数字3e25a5是表示对象的哈希码值。计算/推导的位置和方式如何?
答案 0 :(得分:1)
尽可能合理实用,由hashCode方法定义 class Object确实为不同的对象返回不同的整数。 (这个 通常通过转换内部地址来实现 将对象转换为整数,但这种实现技术不是 Java编程语言所要求的。)
请注意,相应地,确切的公式不是由Java定义的,并且可能因JVM实现和JVM版本而异。
答案 1 :(得分:1)
没有正式的hashCode函数。允许实现创建对该实现有意义的任何hashCode。哎呀,如果有意义的话,不同类型的功能可能会有所不同。如果您正在使用Eclipse,请从菜单中转到“Source - > Generate hashCode()和equals()”,并探索如何配置hashCode函数。基本上,您可以在为此类构建hashCode时决定要使用的成员(如果有)。然后它将一些素数与一些质数一起修补。这是一种有趣的方法。