《EffectiveJava》 笔记版二--equals和hashCode源码解析

《EffectiveJava》 笔记版二--equals和hashCode源码解析

1.Object类

Object类是所有类的基类,那么学好Object类中的方法是Java基础中的基础。Object类中常见的方法有equals(), hashCode(), toString(), clone()和与线程相关的wait(),notify()方法。

这里我们重点去查看equals()和hashCode()的源码,看看是否能看出花来。

2.覆盖equals时总要覆盖hashCode

覆盖equals时总要覆盖hashCode这成了写代码时约定俗成的规范,但是究竟为什么要同时重写这两个方法呢,只有通过源码才能窥探一二了

首先打开equals的源码:

    /**
     * Indicates whether some other object is "equal to" this one.
     * <p>
     * The { @code equals} method implements an equivalence relation
     * on non-null object references:
     * <ul>
     * <li>It is <i>reflexive</i>: for any non-null reference value
     *     { @code x}, { @code x.equals(x)} should return
     *     { @code true}.
     * <li>It is <i>symmetric</i>: for any non-null reference values
     *     { @code x} and { @code y}, { @code x.equals(y)}
     *     should return { @code true} if and only if
     *     { @code y.equals(x)} returns { @code true}.
     * <li>It is <i>transitive</i>: for any non-null reference values
     *     { @code x}, { @code y}, and { @code z}, if
     *     { @code x.equals(y)} returns { @code true} and
     *     { @code y.equals(z)} returns { @code true}, then
     *     { @code x.equals(z)} should return { @code true}.
     * <li>It is <i>consistent</i>: for any non-null reference values
     *     { @code x} and { @code y}, multiple invocations of
     *     { @code x.equals(y)} consistently return { @code true}
     *     or consistently return { @code false}, provided no
     *     information used in { @code equals} comparisons on the
     *     objects is modified.
     * <li>For any non-null reference value { @code x},
     *     { @code x.equals(null)} should return { @code false}.
     * </ul>
     * <p>
     * The { @code equals} method for class { @code Object} implements
     * the most discriminating possible equiv
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值