Object的hashCode()默认返回是内存地址

解决方案 »

  1.   

    hashcode()又是什么呢??详细些可以吗?
    第一个问题有没有人帮我回答一下呀???
      

  2.   

    使用System.out.println()输出的时对象的哈希码,而非内存地址。在Java中是不可能得到对象真正的内存地址的,因为Java中堆是由JVM管理的不能直接操作。
      

  3.   

    我理解 不能输出内存地址,
    hashCode 只是根据内容 ,计算出的哈希值,哪里是什么内存地址。
    附代码 
    public class Address
    {
    public static void main(String[] args)
    {
    String a = "hhhhongjun";
    String b = "hhhhongjun";
    System.out.println(a.hashCode());
    System.out.println(b.hashCode());
    }
    }
      

  4.   

    那该对象的哈西码输出来又有什么用呢?jvm为什么让println输出的是hashcode呢???
      

  5.   

    我理解 不能输出内存地址,
    hashCode 只是根据内容 ,计算出的哈希值,哪里是什么内存地址。
    附代码 
    public class Address
    {
    public static void main(String[] args)
    {
    String a = "hhhhongjun";
    String b = "hhhhongjun";
    System.out.println(a.hashCode());
    System.out.println(b.hashCode());
    }
    }
      

  6.   

    hashCode()默认返回的是内存地址,实际很多类都改写了这个方法,如String类
    hashCode()是在存放hashMap等时用的生成hash的值,
    一般没什么用处,只有在你这样用时,才须考虑hashCode()
    如:
    有一个自己的类Class A
    HashMap map = new HashMap();
    A temp = new A("a");
    map=pub(temp, "1");
    你要根据A("a")在map中查"1"时,就必须改写hashCode
    主A("a")的hashCode相等,且此时temp.equals(new A("a));
      

  7.   

    同意阿根1)一个对象的缺省hashCode()实现就是返回这个对象的内存地址2)执行System.out.println(c)时,会调用对象的toString()方法,如果Test中没有覆写,会执行Object中的toString()方法。
       看看Object中toString的定义就明白了:
      
       public String toString() {
          return getClass().getName() + "@" + Integer.toHexString(hashCode());
       }  
      

  8.   

    这是API里面的解释。
    public int hashCode()Returns a hash code value for the object. This method is supported for the benefit of hashtables such as those provided by java.util.Hashtable. 
    The general contract of hashCode is: Whenever it is invoked on the same object more than once during an execution of a Java application, the hashCode method must consistently return the same integer, provided no information used in equals comparisons on the object is modified. This integer need not remain consistent from one execution of an application to another execution of the same application. 
    If two objects are equal according to the equals(Object) method, then calling the hashCode method on each of the two objects must produce the same integer result. 
    It is not required that if two objects are unequal according to the equals(java.lang.Object) method, then calling the hashCode method on each of the two objects must produce distinct integer results. However, the programmer should be aware that producing distinct integer results for unequal objects may improve the performance of hashtables. 
    As much as is reasonably practical, the hashCode method defined by class Object does return distinct integers for distinct objects. (This is typically implemented by converting the internal address of the object into an integer, but this implementation technique is not required by the JavaTM programming language.) 内部地址可以被用作 一个唯一的整形来 作为哈希玛,但没有要求这么做。而且也不是这么做的。
    至于为什么要 有这个方法,就是为了支持 查找高效。
      

  9.   

    hashCode默认返回的是虚拟机地址,当然不可能是实际的内存地址。
    但是可以认为他是Java对象的内存地址,任何时候都可以获得这个值Object o=new XXX();
    System.out.println(System.idendityHashCode(o));
      

  10.   

    如下代码可能返回的是地址:
    public class Address
    {
    public static void main(String[] args)
    {
    Object a = new String("hhh");
    Object b = new String("hhh");

    System.out.println(System.identityHashCode(a));
    System.out.println(System.identityHashCode(b)); }
    }
    该问题 各位已经都回答得差不多了。
      

  11.   

    public class Address
    {
    public static void main(String[] args)
    {
    String a = new String("hhh");
    Object b = new String("hhh");
    System.out.println(System.identityHashCode(a));
    System.out.println(System.identityHashCode(b)); }
    }
      

  12.   

    i see . thinks every friend! thinks again!