Object类中非final修饰的方法有equals()、hashCode()、toString()、finalize()、clone()
1、equals()方法不需要被覆盖的情况:
1)实例化的对象只有一个
2)不需要进行逻辑判断,只是单纯的比较内存地址是否相同
3)父类覆盖了equals()方法,并且子类中完全够用
4)类是私有的或者包级私有,equals()方法不会被调用。但是建议重写然后抛AssertionError(断言语句失败)异常

2、equals()方法需要被覆盖的情况:
想要实现逻辑比较。比如实现 相同值的不同对象认为是相等的

3、equals方法通用约定:
1)自反性:自己和自己比较时 返回true
2)对称性:x.equals(y) 和 y.equals(x)必须是相同的
3)传递性:如何x.equals(y) y.equals(z)那么x.equals(z)
4)一致性:如果对象的值没有改变,那么x.equals(y)一直是相同的结果
5)非空性:任何非空对象和null比较都返回false

4、覆盖equals方法的步骤
1)== 判断两个对象的内存地址是否相同。
2)对象instanceof类型 判断传的参数是否属于同一个类型 不是的话 直接返回false
3)将参数转化为实际的类型,因为instanceof已经判断过,所以放心转。
4)判断关键域是否相同。

5、覆盖equals应当注意的问题
1)short、byte、int、long可以用==比较。float和double用Float.equals() Float.compare
2)先比价 容易比较的域
3)覆盖equals总要覆盖hashCode
4)不要过度追求功能
5)重写一定要传参一致 及 boolean equals(Object obj)

最新文章

  1. jquery懒加载jquery.lazyload.js
  2. smbclient提示NT_STATUS_INSUFFICIENT_RESOURCES
  3. Oracle数据库分页的三种方法
  4. iPhone:4.7 5.5 4 3.5 对应的各个设备屏幕尺寸对应的像素及App上线信息
  5. POJ 1681 (开关问题+高斯消元法)
  6. CF 149D Coloring Brackets 区间dp ****
  7. 使用JavaScript
  8. MySQL-使用tcpdump排查MySQLl数据库tps飙升的问题
  9. App Submission Issues
  10. 再看IOC, 读深入理解DIP、IoC、DI以及IoC容器
  11. 记一次Hbase查询速度优化经历
  12. java中数组、list、泛型集合的长度
  13. [计算机视觉]100行python实现摄像机偏移、抖动告警
  14. EL表达式、JSTL标签库
  15. Nginx实践篇(2)- Nginx作为静态资源web服务 - 控制浏览器缓存、防盗链
  16. Map的嵌套
  17. Ubuntu下matplotlib的中文显示
  18. Comet OJ - Contest #2 简要题解
  19. output.filename 与 output.chunkFilename 的区别
  20. js模板引擎用法

热门文章

  1. flink第一个应用
  2. Linux下使用SSH命令行传输文件到远程服务器
  3. [编织消息框架][netty源码分析]11 ByteBuf 实现类UnpooledHeapByteBuf职责与实现
  4. poj 1958
  5. (转载)My97 datepicker使用指南
  6. TF-IDF了解
  7. PAT甲级——A1026 Table Tennis
  8. DOM4J -(XML解析包)
  9. PHP基于openssl实现的非对称加密操作
  10. 2019.10.28 csp-s模拟测试91 反思总结