不明白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一样呢?请教各位高人,谢谢
我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一样呢?请教各位高人,谢谢
中new了两个String常量对象,String是特殊对象,相同的String只会被new一次,所以,其永远只占据
一个内存空间,因此hashCode相等