• java基础中的 equals关键字 重写


    equals (public boolean equals(Object obj))

           指示其他某个对象是否与此对象“相等”。

    equals 方法在非空对象引用上实现相等关系:

    • 自反性:对于任何非空引用值 xx.equals(x) 都应返回 true
    • 对称性:对于任何非空引用值 xy,当且仅当 y.equals(x) 返回 true 时,x.equals(y) 才应返回 true
    • 传递性:对于任何非空引用值 xyz,如果 x.equals(y) 返回 true,并且 y.equals(z) 返回 true,那么 x.equals(z) 应返回 true
    • 一致性:对于任何非空引用值 xy,多次调用 x.equals(y) 始终返回 true 或始终返回 false,前提是对象上 equals 比较中所用的信息没有被修改。
    • 对于任何非空引用值 xx.equals(null) 都应返回 false

    Object 类的 equals 方法实现对象上差别可能性最大的相等关系;即,对于任何非空引用值 xy,当且仅当 xy 引用同一个对象时,此方法才返回 truex == y 具有值 true)。

    注意:当此方法被重写时,通常有必要重写 hashCode 方法,以维护 hashCode 方法的常规协定,该协定声明相等对象必须具有相等的哈希码。

     参数:

    obj - 要与之比较的引用对象。
    返回:
    如果此对象与 obj 参数相同,则返回 true;否则返回 false
    举个例子: 
    package toString;
    
    public class RabbitEqualsTest {
         public String name;
         public String furcolor;
         public int age;
         //构造RabbitEqualsTest   重载
         public RabbitEqualsTest(int i){
             super();
             this.age=i;
         }
          public RabbitEqualsTest(String name, String furcolor, int age) {
            super();
            this.name = name;
            this.furcolor = furcolor;
            this.age = age;
        }
        
        //equals方法重写
        public boolean equals (Object obj){
            if(obj==null) {
                return false;
            }else{
                if(obj instanceof RabbitEqualsTest){
                    RabbitEqualsTest rabbit = (RabbitEqualsTest)obj;  //将obj强制转换为RabbitEqualsTest
                    if(this.age==rabbit.age
                            &&this.name==rabbit.name
                            &&this.furcolor==rabbit.furcolor){
                        return true;
                    }
                }
            }
         return false;
         }
    }
    package toString;
    public class RabbitEqualsMain {

    public static void main(String[] args) { //实例化RabbitEqualsTest RabbitEqualsTest r1= new RabbitEqualsTest("小灰","白色",3); RabbitEqualsTest r2= new RabbitEqualsTest("小灰","白色",3); RabbitEqualsTest r3= new RabbitEqualsTest(4); System.out.println(r1==r2); System.out.println(r1.equals(r2)); } }

    结果为:false   true

  • 相关阅读:
    (QR14)带权的DAG节点排序
    数字组合
    最长连续不重复子序列
    树状数组
    归并排序
    差分
    前缀和
    64位整数乘法
    MySQL8 常用指令
    离线及实时实操架构
  • 原文地址:https://www.cnblogs.com/514929hgy/p/6881362.html
Copyright © 2020-2023  润新知