码迷,mamicode.com
首页 > 编程语言 > 详细

09 Java相等判断方法

时间:2019-03-10 21:07:09      阅读:199      评论:0      收藏:0      [点我收藏+]

标签:不同   span   hash算法   重写   hash   相同   shc   ==   就是   

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相等判断方法

标签:不同   span   hash算法   重写   hash   相同   shc   ==   就是   

原文地址:https://www.cnblogs.com/Gavin520/p/10506828.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!