Java学习---8
来源:互联网 发布:js添加dom resize事件 编辑:程序博客网 时间:2024/06/05 01:01
Object类是Java中所有类的始祖,在Java中每个类都是由它扩展而来的。如果没有明确地指出超类,Object就被认为是这个类的超类。
Object类中的equals方法用于检测一个对象是否等于另外一个对象。在Object类中,这个方法将判断两个对象是否具有相同的引用。
在子类中定义equals方法时,首先调用超类的equals。如果检测失败。对象就不可能相等。如果超类中的都相等,就需要比较子类中的实例域。
表现一个完美的equals方法的建议
1,显式参数命名为otherObject,稍后需要将它转换成另一个叫做other的变量
2,检测this与otherObject使用引用同一个对象:
if(this==otherObject) return true
3,检测otherObject是否为null,如果为null,返回false
4,比较this与otherObject是否属于同一个类。如果equals的语义在每个子类中有所改变,就使用getClass检测
if(getClass()!=otherObject.getClass()) return false;
如果所有的子类都拥有统一的语义,就使用instanceof检测:
if(!(otherObject instanceof ClassName)) return false;
5,将otherObject转换为相应的类类型变量
ClassName other =(Class Name) otherObject
6,现在开始对所有需要比较的域进行比较了。使用==比较基本类型域,使用equals比较对象域。如果所有的域都匹配,就返回true;否则返回false
return field1==other.field1&&Objects.equals(field2,other,field2)&&……….
如果在子类中重新定义equals,就要在其中包含调用super.equals(other)
对于数组类型的域,可以使用静态的Arrays.equals方法检测相应的数组元素是否相等。
hashCode方法
散列码(hash code)是由对象导出的一个整型值。散列码是没有规律的。
如果重新定义equals方法,就必须重新定义hashCode方法,以便用户可以将对象插入到散列表中
hashCode方法应该返回一个整型数值(也可以是负数),并合理地组合实例域的散列码,以便能够让各个不同的对象产生的散列码更加均匀。
toString方法
用于返回表示对象值的字符串。
绝大多数(但不是全部)的toString方法都遵循这样的格式:类的名字,随后是一对方括号括起来的域值。
- Java学习笔记8
- java学习(8)
- Java学习记录8
- java学习笔记8
- Java学习笔记8
- Java学习-8天
- JAVA学习随笔8
- JAVA学习总结8
- JAVA学习数据库8
- java学习(8)
- java学习(8)
- Java学习---8
- Java学习8:继承
- Java学习笔记(8)
- java学习8---Java 图形界面编程
- Effective Java 学习笔记(8)
- Effective Java 学习笔记(8)
- java nio的学习-8
- 新型 Android 银行木马“MoqHao”利用社交网络隐藏 C&C 服务器
- python的优点
- POJ1260 Pearls
- Hbuilder常用快捷键功能.
- 编译原理(六) LL(1)文法分析法-分析过程
- Java学习---8
- Java学习笔记之IO(三):OutputStream输出字节流
- sql语句无错误 order by 和limit一起用数据查询不准有重复
- MFC程序逆向 – 消息篇
- hashcode与equals详解
- spring-boot-admin源码分析及单机监控spring-boot-monitor的实现(一)
- 690. Employee Importance
- Island of Survival LightOJ
- 115个Java面试题和答案——终极列表(上)