equals和hashcode的重写
来源:互联网 发布:千方百剂医疗器械软件 编辑:程序博客网 时间:2024/05/21 11:03
1重写equals方法
- 自反性
对于任何引用,只要其不为null那么对自身使用equals方法将永远返回true(x.equals(x)返回true)。 - 对称性
- 传递性
- 一致性
- 对于任何非空引用值a和b,用其对null进行equals检查应当始终返回false,也就是说a.equals(null)正反等于false
下面给出实例
package xuming;class Student { String name; int age; int classNum; public Student(){ } public Student( String name, int age, int classNum){ this.name = name; this.age = age; this.classNum=classNum; } //重写equals方法 public boolean equals (Object o){ //测试是否指向同一个对象 if(this==o) {return true;} //测试引用o是都为null if(o==null) {return false;} //测试o指向的对象是都可以看作Student类型 if(!(o instanceof Student)) {return false;} //将引用进行强制类型转换 Student s = (Student) o; //测试相关属性内容 if(this.name.equals(s.name) &&this.age==s.age &&this.classNum==s.classNum) { return true;} else { return false; } } //重写hashcode方法 public int hashCode(){ //return a new hash code ,与成员属性有关 return 7*this.name.hashCode() + 13*Integer.valueOf(this.age).hashCode() + 17*Integer.valueOf(this.classNum).hashCode(); }}// main classpublic class Sampled142{ public static void main(String[] args){ Student a1 = new Student("jc",21,1000); Student a2 = new Student("jc",21,1000); if(a1.equals(a2)){ System.out.println("学生对象1和2是等价的 其哈希码分别是"); System.out.println(a1.hashCode()+"and"+a2.hashCode()); } else{ System.out.println("不等价"); } } }
0 0
- Hashcode和equals的重写
- equals和hashcode的重写
- 重写equals()和hashCode()
- 重写equals()和hashCode()
- 重写equals 和 hashCode
- 重写equals 和HashCode
- 重写equals 和 hashcode
- hashCode和equals重写
- 重写equals和hashcode
- hashCode()和equals()重写
- 重写equals和hashCode
- 重写equals 和 hashCode
- equals()和hashcode()的探讨和重写
- equals和hashcode的重写规则
- 重写hashCode()和equals()方法的必要
- 同时重写equals和hashCode的意义
- equals 和 hashCode 的重写方法
- equals和hashCode的重写方法
- 总结MySQL修改最大连接数的两个方式
- 80端口被NT kernel & System 占用pid 4
- 封装NSLog打印调试信息
- structs2入门 用户登录案例
- 国内外知名IT科技博客
- equals和hashcode的重写
- Activity启动流程分析
- XMPP协议实现原理介绍
- 数据库优化
- Android中的通知Notification
- XCode 8中使用UI Test
- git--远程管理自己本地的工程pull报错了
- MySQL数据库的连接和关闭
- Android Init进程源码分析