前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。

上接《Effective Java》 第一讲:创建和销毁对象

八、覆盖 equals 时请遵守通用约定

1. 自反性:对于任何非空的引用 x 都有 x.equals( x ) 都必须返回 true 。  ( 参见:什么是自反、反自反  )

2. 对称性:对于任何非 null 的引用值 x 和 y ,当且仅当y.equals(x)返回true时,x.equals(y)必须返回 true。

3. 传递性:x,y,z, 如果 x.equals(y) 为 true , y.equals(z) 为 true,那么 x.equals(z) 必须为 true。

4. 一致性:引用值 x 和y,未修改值 ,则多次调用 x.equals(y),结果必须一致。

5. 对于任何非 null 的引用值x,x.equals(null) 必须返回 false。

实现高质量equals方法的诀窍:

1. 使用==操作符检查“参数是否为这个对象的引用”

2. 使用instanceof操作符检查“参数是否为正确的类型”

3. 把参数转换成正确的类型

4. 对于该类中的每个”关键”域,检查参数中的域是否与该对象中对应的域相匹配

5. 当你编写完成了equals方法之后,应该问自己三个问题:它是否是对称的、传递的、一致的。

九、覆盖 equals( )  时总要 覆盖 hashCode( ) 

《Effective Java》 第二讲:对于所有对象都通用的方法相关推荐

  1. Effective Java:对于所有对象都通用的方法

    前言: 读这本书第1条规则的时候就感觉到这是一本很好的书,可以把我们的Java功底提升一个档次,我还是比较推荐的.这里我主要就关于覆盖equals.hashCode和toString方法来做一个笔记总 ...

  2. Effective Java:对于全部对象都通用的方法

    前言: 读这本书第1条规则的时候就感觉到这是一本非常好的书.可以把我们的Java功底提升一个档次,我还是比較推荐的.这里我主要就关于覆盖equals.hashCode和toString方法来做一个笔记 ...

  3. Effective Java 对于所用对象都通用的方法 8.覆盖equals时请遵守通用约定.txt

    对于eclipse覆盖equals方法就是Alt+Shift+S,而AS就是Alt+Insert.覆盖很简单,可是却容易导致错误,而且后果很严重.最容易避免的方法就是不覆盖,这样类就只与他自身相等. ...

  4. Effective java -- 2 对于所有对象都通用到方法

    第八条:覆盖equals时请遵守通用约定 什么时候需要覆盖equals方法?类具有自己的逻辑相等概念,并且父类的equals方法不能满足需要. 重写equals时需要遵循一下约定: 自反性:非null ...

  5. 《Effective Java》—— 对于所有对象都通用的方法

    本节主要涉及Object中通用的一些方法,比如equals,hashCode,toString,clone,finalize等等 覆盖equals时请遵守通用约定 equals方法实现的等价关系: 自 ...

  6. java 通用对象_java中对所有对象都通用的方法

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 覆盖equals时请遵守通用约定 我们知道equals要实现的是逻辑上的相等.站在数学的角度来看,两个事物相等的条件,有如下几个: 1.自反性:对于任何非 ...

  7. 2.对于所有对象都通用的方法_EJ

    第8条: 覆盖equals时请遵守通用约定 我们在覆盖equals方法时,必须遵守它的通用约定: 1.自反性.对于任何非null的引用值x,x.equals(x)必须返回true: 2.对称性.对于任 ...

  8. Effective Java 读书笔记(七):通用程序设计

    Effective Java 读书笔记七通用程序设计 将局部变量的作用域最小化 for-each 循环优于传统的 for 循环 了解和使用类库 如果需要精确的答案请避免使用 float 和 doubl ...

  9. [Effective Java]第二章 创建和销毁对象

    第一章      前言 略... 第二章      创建和销毁对象 1.            考虑用静态工厂方法代替构造器 创建对象方法:一是最常用的公有构造器,二是静态工厂方法.下面是一个Bool ...

最新文章

  1. 网卡的7种bond模式
  2. Java语言基础22--访问权限
  3. 【终于等到你】7种策略解除云风险警报
  4. 电商设计提升水平,需要优秀的模板素材进行临摹练习!
  5. 云服务下的安全特点及基础防护
  6. 要管理组策略 您必须以域用户账户登录此计算机,让AD域用户账户只能登陆管理员指定的客户端计算机...
  7. Adobe Premiere基础-炫酷文字快闪(十四)
  8. 手把手教你用Java获取IP归属地
  9. 微信小程序picker下拉框
  10. 一个新的起点,也是转折点
  11. 聊聊同步/异步/阻塞/非阻塞(举栗子说明)
  12. Oracle时间以半小时为单位取整
  13. WIN10更改不了锁屏壁纸
  14. WPS JS宏表格定位实例
  15. Oscar-实验过程记录
  16. 前端工程师高手说说CSS学习中的瓶颈
  17. android pak文件_Android资源文件说明
  18. 算法题 —— 寻找明星
  19. 基于数学形态学的道路裂缝病害检测
  20. NFC手机(小米2A刷机到Android4.4)HCE环境搭建

热门文章

  1. Windows高级编程学习笔记(三)
  2. Python3 学习系列 丨 博客目录索引
  3. 【ZOJ - 3780】Paint the Grid Again(拓扑排序,图论,证明性质)
  4. knn算法python理解与预测_理解KNN算法
  5. arduino无源蜂鸣器歌曲编码_Arduino加无源蜂鸣器,播放音乐《葫芦娃》
  6. 学习笔记13-C语言-字符串函数、缓冲区
  7. leetcode976. 三角形的最大周长(又是你得不到的简单题)
  8. 顺序结构实现【数据结构】
  9. 多进程与多线程通信同步机制
  10. 使用Linux auto Makefile自动生成的运行步骤