请问在JAVA中对象在栈内存中的引用存放的是该对象对应的HASH编码还是内存地址?

解决方案 »

  1.   

    我觉得是hash,等待准确答案。
      

  2.   

    在java虚拟机规范里,提到的说法就是引用.到底是什么东西,要去看具体的jvm实现了.
      

  3.   

    好像曾在一本书里看到过类似的例子,好像是HASH里
      

  4.   

    hash code不是地址,而是一个标识对象用的。每个对象的hash code是不一样的,Object的默认hash code记得是按引用地址的。由 Object 类定义的 hashCode 方法针对不同的对象返回不同的整数。(这一般是通过将该对象的内部地址转换成一个整数来实现的)
      

  5.   

    我认为是地址,因为hash是可能重复的。
      

  6.   

    想想String就知道,肯定是地址不是hash
    String a = new String("abc");
    String b = new String("abc");
    equals方法返回true的两个String hashcode是一样的,但是 ==是false啊,说明a.b指向的不是同一个对象,如果引用指向的是hash这就矛盾了
      

  7.   

    他们认为的hash肯定不是这个hash
      

  8.   

    String类型的ToString方法本重写过  我检测不出来啊
      

  9.   


    public class A {    public static void main(String[] args) {        Object obj = new Object();
            System.out.println(obj);
            int value = System.identityHashCode(obj);
            System.out.println(Integer.toHexString(value));
            String str = "hello";
            System.out.println(System.identityHashCode(str));
        }
    }
      

  10.   

    这个hash跟你的题目没什么关系.
      

  11.   

    是啊,没有看出JAVA中对象在栈内存中的引用与HASH编码有什么关系。另外引用不是内存地址?c/c++中的指针才是存放的内存的地址。
      

  12.   


    Java中使用Hash code来区分对象,因而对象引用也是hash code了。
    不是引用地址。引用对象地址的是C++的方法(&对象),不是java.
      

  13.   

    是地址,可以打印出hashCode看就知道了.通常要使对象唯一,会重写equals和hashCode两个方面.