为什么hashCode()为java中的同一个对象提供不同的输出?

时间:2016-09-26 05:21:32

标签: java hashcode

我有这段代码

class A
{
 public static void main(String reds[])
  {
    A ob=new A();
    System.out.println("Object "+ob);
    System.out.println("HashCode "+ob.hashCode());
  }
}

输出是: Output image

上述代码的输出在大多数情况下给出不同的值。 此外,下面的链接提到打印引用变量打印 ClassName @ hashcode

printing reference variable is not printing the object's address

但是,打印引用varibale的输出与hashCode()不同。这里实际发生了什么?

只是想在java中清除我的hashcode概念。

2 个答案:

答案 0 :(得分:2)

当您在对象(类型为println())上调用A时,它会打印getClass().getName() + "@" + Integer.toHexString(hashCode())(这是Object类中toString()的默认实现),即它将hashCode转换为 hexString 。如果你对hashCode做同样的事情(打印时),你将获得相同的值。

如果您的课程重写toString,则会打印出来。

答案 1 :(得分:0)

Object.toString()使用十六进制的hashCode。你是用十进制自己打印的。