Effect Java学习笔记
文章目录
第三章 对于所有对象都通用的方法
第10条:覆盖 equals 时请遵守通用约定
1.覆盖约定
1.类的每个实例本质上都是唯一的,对象存储位置不同,每一个对象都是唯一的。
2.类没有必要提供“逻辑相等”( logical equality )的测试功能,如果没有需要比较的地方,就没必要重写
3.超类已经覆盖 equals 超类的行为对于这个类也是合适的。如:Set 实现都从 AbstractSet 继承 equals 实现, 覆盖之前先查看父类是否已经实现
4.类是私有的或是包级私有的可以确定它的equals方法永远不会调用
2.equals 方法实现了等价关系( equi va lence relation ),其属性如下:
自反性( reflexive 对于任何非 null 的引用值 equals(x )必须返回 true
对称性( symmetric ):对于任何非 null 的引用值 ,当且仅当 y.equals(x )返
true 时', x.equals(y )必须返回 true
传递性( transitive 对于任何非 null 的引用值 ,如果 x.equals(y )返回
true ,并且 y.equals(z )也返回 true ,那么 x.equals(z )也必须返回 true
一致性( consistent 对于任何非 nu ll 引用值 ,只要 equals 的比较操作
在对象中所用的信息没有被修改,多次调用 x.equals(y )就会一致地返回 true,
或者一致地返回 false
对于任何非 null 的引用值 x, x.equals (null )必须返回 fals
3.实现高质 equals 方法的诀窍
- 使用==操作符检查“参数是否为这个对象的引用”
- 使用 instanceof 操作符检查“参数是否为正确的类型”
- 把参数转换成正确的类型
- 对于该类中的每个“关键”( significant )域,检查参数中的域是否与该对象中对应的域相匹配
第11条:覆盖 equals 时总要覆盖 hash Code
总结
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。