RT
String str1 = new String("abc");
String str2 = new String("abc");
String str3 = "abc";
我想要输出这三个引用所指向对象的地址。我用System.out.println(str1.hashCode());
System.out.println(str1.hashCode());
System.out.println(str1.hashCode());输出的是一样的,都是输出的abc的哈希码。
请问各位大侠,如何才能输出所在的地址阿!!!!!!!!

解决方案 »

  1.   

    java中又没有指针,看地址是不行的,顶多看到jvm里的hash码
      

  2.   

    内部地址可以被用作   一个唯一的整形来   作为哈希玛,但没有要求这么做。而且也不是这么做的。    
      至于为什么要   有这个方法,就是为了支持   查找高效。    hashCode默认返回的是虚拟机地址,当然不可能是实际的内存地址。    
      但是可以认为他是Java对象的内存地址,任何时候都可以获得这个值 
      

  3.   

    因为hashCode比较的是实例的地址,不是引用的地址,java隐藏了虚拟机的内存操作,更不要说实际内存地址了.
      

  4.   

    哦。明白了。String str1 = new String("abc");
    String str2 = new String("abc");
    String str3 = "abc";
    String str4 = "abc";但是如果我想要查看这4句话一共创建了几个对象,应该怎么用程序实现呢???
    我想的是查看内存地址,呵呵,看来这个方法不行。
    那各位大侠有什么高招指点下么??
      

  5.   

    ...... 能解释一下么??我认为abc是一个对象,new创建一个 请问你是怎么人为的?
      

  6.   

    用==做判断就知道了,除了str3==str4为true,别的都为false
      

  7.   

    3个
    new关键字的肯定有对象 a、b
    后两个其实是一个内存空间 两个变量名而已
    所以有三个