JDK源码-Object类中的equals()

Object类中的equals()源码
public boolean equals(Object obj) {
        return (this == obj);
}

/*
作用:
指示其他某个对象是否与此对象“相等”

返回值:
boolean类型,如果比较的两个对象“相等”,则返回true,否则返回false

形参:
Object obj,因此可以传递任何对象

this == obj:
“==”
基本数据类型比较的是数值,
引用数据类型比较的是两个对象的地址值,
其中this是哪个对象调用这个方法,谁就是this;
而obj是调用方法形参里面传递进来的对象

*/
重写Object类中的equals()
注意:
1.判断传递的参数是否是this本身,如果是返回true,提高程序效率
2.判断传递的参数是否是null,如果是返回false,提高程序效率
3.在向下转型前去判断类型,防止类型转换异常ClassCastException
//系统生成的重写equals()
@Override
    public boolean equals(Object o) {
//        如果调用的对象和传进来的对象是一样的,那么它们一定相等,直接结束方法并返回true
        if (this == o) return true;
//        如果传递的对象为null(也避免了空指针异常),
//        或者调用该方法的对象和传递进来的对象的字节码对象不一致(说明它们不是同一个类别的东西),就返回false
        if (o == null || getClass() != o.getClass()) return false;
/*
          经过上一个if判断,也就已经顺带做了向下转型的安全判断,这里就可以直接安全的进行向下转型了
 */
        Cola cola = (Cola) o;
/*
         使用 A && B,如果A为false,则直接返回false,不会去判断后续的B部分,提高代码的效率
         先判断int类型的数值是否相等,再来判断较为复杂的引用数据类型的数据
         其中Objects.equals(a1,a2)的源码为:
         public static boolean equals(Object a, Object b) {
            return (a == b) || (a != null && a.equals(b));
         }
         (a == b):判断a和b两个引用数据类型的地址值是否相等,地址值都相等,那他们肯定是同一个东西,就可以直接返回true了
         (a != null && a.equals(b)):首先要判断a不为null,再去调用equals方法就可以避免空指针异常的可能性,
            equals方法可以比较两个引用数据类型的数值是否相等,如果相等则为true
 */
        return code == cola.code &&
                Objects.equals(name, cola.name);
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值