hashCode()中的代碼看不明白
??? @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 ?
2016-07-20
因為如果name==null 則返回0;那么result就是一個固定值;
name.hashCode()則是將name值轉(zhuǎn)換為hash值,再加上前面的固定值,這樣就造成了,如果name值在不被修改的情況下,return result返回的永遠是一個固定值,這樣就判定了是否一致;如果name值被修改,那么肯定是不一致的了~~~