不明白hashCode()方法,
我new了两个对象,虽然内容一样,而且equals,为什么hashCode一样呢?class Name{
String firstName,lastName;
Name( String firstName , String lastName ) {
...
}
public String getFirstName() {
return this.firstName;
}
}System.out.println( new Name( "f1" , "l1" ).getFirstName().hashCode() );
System.out.println( new Name( "f1" , "l1" ).getFirstName().hashCode() );按书上说,hashCode可以找到内存地址,原则上,new了两个对象,内存地址应该不一样,那为什么hashCode一样呢?请教各位高人,谢谢

解决方案 »

  1.   

    String  的 hashCode 和equals是配套的
      

  2.   

    成员变量指向的对象是同一个string
      

  3.   

    谢谢 magibt() ,我理解了,的确如你所说,Name的两个参数都是String,也就是说第一步,是在堆内存
    中new了两个String常量对象,String是特殊对象,相同的String只会被new一次,所以,其永远只占据
    一个内存空间,因此hashCode相等
      

  4.   

    hashSet和hashCode有什么关系呢,