equals和==
.toLowerCase()执行这些方法的时候他会重新new一个对象,所以ABC与ABC.toLowerCase()不相等
相同点:他们都是用来比较两个对象是否相等
不同点:
==比较的是两个对象是不是同一个对象,也就是对比他们在堆中的地址
equals比较的是两个对象在代码编写的时候给他们重写的实际对比意义,如果不重写的话就按照object默认的方式==地址比较。
自己重构equals方法的实际意义
基类object的equals
使用场景
==的使用场景
- 除去浮点数之外的基本数据类型的比较
- 两个浮点数的比较,一般的做法就是将两数相减,如果结果等于一个“比较小”的值,那就视为相等
- 一个对象的引用与null的比较
- 一个对象的两个不同引用的比较
equals的使用场景
- 实现了equals()方法的类的两个对象的比较
错误的使用场景
- 使用==对一个类的两个对象的引用进行比较,此时的结果为false,因为,他们是“两个不同的对象"
hascode
在java中任何一个对象度具备equals(Object obj)和hashcode()两个方法,因为他们是在object类中定义的
hashcode()方法返回一个int数,在object类中的默认实现方式是“将该对象的内存地址转化成一个整数返回
hashcode是系统用来快速检索对象而使用
如果x和y的hashcode()不相等,那么x.equals(y)一定返回false
今天是持续写作的第 15 / 200 天。可以点赞、评论、收藏啦。