09 Java相等判断方法

Posted gavin520

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了09 Java相等判断方法相关的知识,希望对你有一定的参考价值。

JavaSE 基础之九

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并不绝对可靠。
  • 解决方案
    1. 对于大量或者快速的对比,如果全部使用equals()方法,效率比较低耗时比较多。
    2. 每当要对比的时候,先拿hashcode看hash值是否一样,如果hash值不一样的直接表示当前对象不相等;如果hashcode相等,再用equals()去对比,都相等,则表示当前对象相等。

以上是关于09 Java相等判断方法的主要内容,如果未能解决你的问题,请参考以下文章

java中如何判断两个变量相等

Java 复习1

Java中怎么比较两个字符串是不是相等?

java 判断字符串是不是相等

Java怎样判断字符相等

Java怎样判断字符相等