重写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 }
相关文章推荐
- JAVA中重写equals()方法为什么要重写hashcode()方法说明
- 学习笔记之hashcode(),equals()重写
- [转载]关于定义hashcode时要使用31这个数的解释
- [JavaEE] 关于JPA entity 重写equals()和hashcode()的说明
- String用法详解(equal源码 ==和equal的解释、字面赋值和new赋值效率、重写了hashcode的方法解释)
- JAVA中重写equals()方法为什么要重写hashcode()方法说明
- 【原创】关于java对象需要重写equals方法,hashcode方法,toString方法 ,compareto()方法的说明
- JAVA基础笔记(Java:重写equals()和hashCode())
- 学习笔记-JAVA-考点10-什么情况下需要重写equals和hashcode()两个方法?
- JAVA中重写equals()方法为什么要重写hashcode()方法说明
- JAVA中重写equals()方法为什么要重写hashcode()方法说明
- JAVA中重写equals()方法为什么要重写hashcode()方法说明
- JAVA中重写equals()方法为什么要重写hashcode()方法说明
- 一句话解释为什么要同时重写equals和hashcode
- JAVA中重写equals()方法为什么要重写hashcode()方法说明
- 重写equals()还要重写hashcode()说明及举例
- 重写equels还要重写hashcode方法的解释
- Java 重写hashCode() 时为什么要用 31 来计算
- Java 基础一些代码练习笔记(HashCode重写)
- Opencv研读笔记:haartraining程序之莫名其妙的条件宏ICV_DEF_FIND_STUMP_THRESHOLD_SQ解释~