我不断在同一台机器上运行这个程序:
class Test {
public static void main(String[] args) {
Test test = new Test();
System.out.println(test.hashCode());
}
}
每次在我的机器(Windows 7 64 位)上运行程序时结果都是一样的:4384790
在另一台机器(Windows server 2008,64 位)上,大多数时候它给了我:1671711。但是有时结果是:11394033。
在我的机器上,我在 Java HotSpot(TM) Client VM 1.6.0_26/1.6.0_33 下运行程序
我已阅读 Object 类的文档:
在合理可行的情况下,由 Object 类定义的 hashCode 方法确实为不同的对象返回不同的整数。(这通常通过将对象的内部地址转换为整数来实现,但 JavaTM 编程语言不需要这种实现技术。)
但是如果hashCode()确实是通过将对象的内部地址转换为整数来实现的,我还是不明白为什么Java VM每次运行时都会为Test对象分配相同的地址。
是否确切知道默认hashCode()的操作方式?