您的位置:首页 > 其它

重写hashCode中的31值得解释说明笔记

2018-10-11 11:25 507 查看
/*
* 为什么是31?
* 1,31是一个质数,质数是能被1和自己本身整除的数
* 2,31这个数既不大也不小
* 3,31这个数好算,2的五次方-1,2向左移动5位
*/
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + age;
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)                        //调用的对象和传入的对象是同一个对象
return true;                        //直接返回true
if (obj == null)                        //传入的对象为null
return false;                       //返回false
if (getClass() != obj.getClass())       //判断两个对象对应的字节码文件是否是同一个字节码
return false;                       //如果不是直接返回false
Person other = (Person) obj;            //向下转型
if (age != other.age)                   //调用对象的年龄不等于传入对象的年龄
return false;                       //返回false
if (name == null) {                     //调用对象的姓名为null
if (other.name != null)             //传入对象的姓名不为null
return false;                   //返回false
} else if (!name.equals(other.name))    //调用对象的姓名不等于传入对象的姓名
return false;                       //返回false
return true;                            //返回true
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息