对象值和对象hashCode值之间有什么区别

时间:2014-06-02 12:55:55

标签: java

class RefDem
{
    public void m1()
    {
      System.out.println("m1() method....");
    }
}
class RefDemo
{
   public static void main(String[] args)
    {
   //d is object of RefDem class
    RefDem d=new RefDem();
    d.m1();
   System.out.println("d :"+d);
  System.out.println("d hash code :"+d.hashCode());
}
}

输出:

m1() Mehtod
d : RefDem@1e5e2c3  //please explain what is this value
d hash code : 31843011   //please explain what is this

2 个答案:

答案 0 :(得分:0)

第一个是toString()方法的标准输出。请参阅here

第二个是此对象的hashcode

答案 1 :(得分:0)

您没有覆盖toStringhashValue,因此使用Object的实现。

toString()返回一个由类名称(RefDem)组成的字符串,以及以“@”分隔的十六进制格式(1e5e2c3)的内存位置。

"d :" + d相当于"d :" + d.toString(),因此您获得"d :RefDem@1e5e2c3"

Object的hashCode实现返回Object的内存位置(如int)31843011(注意31843011 == 0x1E5E2C3