Effect Java学习笔记

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 方法的诀窍

  1. 使用==操作符检查“参数是否为这个对象的引用”
  2. 使用 instanceof 操作符检查“参数是否为正确的类型”
  3. 把参数转换成正确的类型
  4. 对于该类中的每个“关键”( significant )域,检查参数中的域是否与该对象中对应的域相匹配

第11条:覆盖 equals 时总要覆盖 hash Code

总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值