关于equals方法和hashcode方法重写的问题

本文详细介绍了Java中equals方法和hashCode方法的基本概念及其实现细节。包括equals方法的默认行为、重写步骤及其所需满足的特性;同时介绍了hashCode方法的概念及其与equals方法的关系。

 一.equals方法:

  1.hashcode方法和equels方法都来自object,equals方法不重写的话,和==的作用是相同的。

     在重写equals的时候,注意一般需要满足的特性:

    ①自反性:这个略掉

    ②非空性:即任何非空引用x.equals(null)都应该返回false。null是不确定的,null和null比较是没有意义的

    ③对称性:即x.equals(y)和y.equals(x)在结果上是一致的。于是这里的话根据第二个非空性,就都要求两个引用都应该是非空的

  2.equals方法重写的一般步骤:

    

   public boolean equals(Object obj) {
        //首先比较两个引用是不是同一个
        if(obj==this){
            return true;
        }//如果不是同一个引用,再来比较内容是不是相同
        else if(obj!=null&&obj.getClass()==this.getClass()){//instanceof 运算符是用来在运行时指出对象是否是特定类/或者它的子类的一个实例,
            Student obj1=(Student) obj;
            return this.getId().equals(obj1.getId())&&this.getName().equals(obj1.getName());
        }else if(obj==null||this==null){
            return false;
        }
        return false;
    }

    假设student有String name和Integer id两个属性。

  3.hashcode方法概念上将是,散列数据的方法,目前理解成是便于快速高效比较两个对象是不是相等的一种方法,hashcode相等是两个对象相等的必要条件。

转载于:https://www.cnblogs.com/xiaofei455133/p/7351492.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值