慕粉3620947
2016-07-20 17:01
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
这段代码为什么要判断 (name==null) 的值并返回 0 或者 name.hashCode() 再加上 result*31 ?
因为如果name==null 则返回0;那么result就是一个固定值;
name.hashCode()则是将name值转换为hash值,再加上前面的固定值,这样就造成了,如果name值在不被修改的情况下,return result返回的永远是一个固定值,这样就判定了是否一致;如果name值被修改,那么肯定是不一致的了~~~
Java入门第三季
409766 学习 · 4543 问题
相似问题