学习
实践
活动
专区
工具
TVP
写文章

== 与equals和hashCode与equals

equals() : 它的作用也是判断两个对象是否相等。但它一般有两种使用情况: 情况1:类没有覆盖 equals() 方法。 则通过 equals() 比较该类的两个对象时,等价于通过“==”比较这两个对象。 情况2:类覆盖了 equals() 方法。 方法是被重写过的,因为 object 的 equals 方法是比较的对象的内存地址,而 String 的 equals 方法比较的是对象的值。 面试官可能会问你:“你重写过 hashcode 和 equals 么,为什么重写equals时必须重写hashCode方法?” hashCode()与equals()的相关规定 如果两个对象相等,则hashcode一定也是相同的 两个对象相等,对两个对象分别调用equals方法都返回true 两个对象有相同的hashcode值,

29020
  • 广告
    关闭

    2023新春采购节

    领8888元新春采购礼包,抢爆款2核2G云服务器95元/年起,个人开发者加享折上折

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    浅谈equals、hashcode、==

    equals equals方法是基类Object中的实例方法,因此对所有继承于Object的类都会有该方法。「该方法本意是比较内容是否相同」。 Object类中equals方法的实现: public boolean equals(Object obj) { return (this == obj); } 在Object类中,equals equals 重写原则: 对称性: 如果x.equals(y)返回是“true”,那么y.equals(x)也应该返回是“true” ; 自反性:x.equals(x)必须返回是“true” ; 类推性 : 如果x.equals(y)返回是“true”,而且y.equals(z)返回是“true”,那么z.equals(x)也应该返回是“true” ; 一致性: 如果x.equals(y)返回是“true ”,只要x和y内容一直不变,不管你重复x.equals(y)多少次,返回都是“true” ; 对称性: 如果x.equals(y)返回是“true”,那么y.equals(x)也应该返回是“true”。

    21710

    说说equals() (中)

    要判断两个对象的内容是否相等,不要自己写方法(isSame())去判断,而是应该重写父类的 equals方法(这里的父类是Object),我们知道String重写了equals()方法,所以这儿打印size 原来我们跟本就不是重写(覆盖)了父类的equals方法,而是自己又写了一个参数为Person的equals方法,根本不是重写,只是重载了父类的方法而已。 再执行本文开始那段代码,不出所料,问题依旧 很明显,Person这个类在重写equals()方法后,虽然已经支持List,但还不支持Set。 总结:当我们在实际业务中需要重写(覆盖)equals方法时,根据规范,我们一定要重写(覆盖)hashCode方法。在实际开发过程中,不建议一上来就重写equals方法,除非你有特殊的需求。 equals方法了

    8230

    重写hashcode()和equals()

    首先我们先回顾一下Object中hashcode()和equals()两个方法的默认实现。 equals()方法则是在HashMap中插入值或查询时会使用到。 当HashMap中插入值或查询值对应的散列码与数组中的散列码相等时,则会通过equals方法比较key值是否相等,所以想以自建对象作为HashMap的key,必须重写该对象继承object的equals HashMap中的比较key是这样的,先求出key的hashcode(),比较其值是否相等,若相等再比较equals(),若相等则认为他们是相等 的。若equals()不相等则认为他们不相等。 如果只重写hashcode()不重写equals()方法,当比较equals()时只是看他们是否为 同一对象(即进行内存地址的比较),所以必定要两个方法一起重写。

    26210

    hashcode()和equals()和==

    号比较的是两个变量的数值是否相等,比较的是存储在内存里面的数值是否相同 有两种情况 比较两个基本数据类型,直接比较的是值是否相等 比较两个对象,比较的是引用,比较的是内存地址是否相同,引用是否指向同一块内存 === equals () equals()是Object提供的方法之一,比较的是两个对象是否相同,比较的也是引用。 但是equals方法可以重写覆盖,所以可以通过这样让它比较数据内容,例如String的底层代码就重写了这个方法 public boolean equals(Object anObject) { ()相比,效率更高,重写equals方法一般比较复杂,但是hashcode只要一个hash值就可以比较了 与equals()方法对比 在没有刻意修改equals方法的情况下,equals比较相等的对象, hashcode也是一样的 但是hashcode 不是绝对可靠的,可能hashcode相等,但是不equals

    18300

    扫码关注腾讯云开发者

    领取腾讯云代金券