09 Java相等判断方法
Posted gavin520
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了09 Java相等判断方法相关的知识,希望对你有一定的参考价值。
09 Java相等判断方法
1. ( == )
( == )比较的是对象值,如果是地址,比较两个地址是否相等。
2. equals()方法
equals()也默认与( == )一样比较地址,但是每个类都继承了object,每个类都可以重写equals(), 你可以自己实现比较的逻辑,比如比较对象的所有属性和方法是否相等。
String类重写equals(),比较两者的每个字符是否相同。
3. equals()方法 与hashcode方法比较
- 效率对比
1. 两者都是java设计用来判断两个对象是否相等的方法,但是equals()在进行比较的时候,逻辑是比较对象的所有属性是否相等,如果属性全部相等,当前两个对象就相等,但是这种验证方法效率比较低。
2. 如果用hashcode来比较,hashcode方法用到的hash值来比较(hash算法),效率非常高。 - 可靠性对比
1. hashcode并不是完全可靠的,有时候不同对象生成的hashcode一样。
2. equals()相等的两个对象,他们的hashcode值一定相等,也就是说equals()来判断绝对是可靠的。
3. hashcode相等的两个对象,使用equals()进行比较并不一定相等。也就是hashcode并不绝对可靠。 - 解决方案
- 对于大量或者快速的对比,如果全部使用equals()方法,效率比较低耗时比较多。
- 每当要对比的时候,先拿hashcode看hash值是否一样,如果hash值不一样的直接表示当前对象不相等;如果hashcode相等,再用equals()去对比,都相等,则表示当前对象相等。
以上是关于09 Java相等判断方法的主要内容,如果未能解决你的问题,请参考以下文章