晕菜,谁告诉你hasCode()方法是用来取地址的?另外,java用new生成的对象都是从heap中分配内存,所以两个“相邻的对象”地址不会是连续的,这个很正常啊

解决方案 »

  1.   

    String a = "well";
    String b = new String("well");
    System.out.println(a.hashCode());
    System.out.println(b.hashCode());a和b两个reference指向的地址绝对不会相同,但是hasCode却是一样的
      

  2.   

    hashCode() 会保证相同的值会有相同的hashCode,一般在hashMap、hashSet等使用hashCode为查找和添加依据的container class中才用到。
      

  3.   

    String str3 = new String("well");用new就在堆中分配了一个地址,用多少个new就分配多少个地址空间.而String a = "well";是将a指向的对象存储在缓存池中,缓存池中不允许有重复对象存在.