“==“ 和 equals() 和 hashCode()

重写了equals()方法时,为什么要重新hashCode()的方法?

作用:hashCode()方法和equals()方法的作用一样,都是对比两个对象是否相等

区别:

        equals() 比较对象很多内容,比较全面,耗时较多,效率就比较低,但绝对可靠.

        equals() 相等的两个对象, hashCode() 肯定相等

        hashCode() 只比较一个 hash值,效率就比较高, 不可靠.

        hashCode() 相等的两个对象的equals() 不一定相等

比较原则:

        首先, 比较hashCode(), 如果不相同, 两个对象肯定不相同.

        如果hashCode()相同, 在比较equals

目的:

        既能大大提高了效率,也保证了对比的绝对正确性

"==" 和 equals方法究竟有什么区别?

        ==比较的是值,

        == 如果比较的是基本数据类型, 比较的则是变量值

        ==如果比较的是引用数据类型, 比较的则是地址值

        equals比较的是引用数据类型

        如果没有重写hashCode和equals方法, 比较的就是地址值, 因为Object的equals方法中使用的是==

        如果重写hashCode()和equals方法,则比较的是重写后的原则

        例如: 两个String字符串比较时, 比较的是内容,因为String底层重写了equals方法进行内容的比较

        

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值