JAVA单排日记-2019/11/11-1-equal方法

  • 作用
    1)对于==,比较的是值是否相等
    基本数据类型的变量:比较其存储的 “值”是否相等;
    引用类型的变量:比较的是所指向的对象的地址
    2)对于equals方法,
    基本数据类型的变量:equals方法不能作用于基本数据类型的变量
    引用类型的变量:若无重写,比较的是所指向的对象的地址

  • 重写equal,比较两个对象的属性

源码为

    public boolean equals(Object obj) {
        return super.equals(obj);
    }

地址值不同则结果为false

public class equal {
    public static void main(String[] args) {
        Person one = new Person("张三",20);
        Person two = new Person("张三",20);
        System.out.println(one.equals(two));
    }
}

重写equal,比较两个对象的属性

    @Override
    public boolean equals(Object obj) {
        Person p = (Person) obj;
        return this.name.equals(p.name) && this.age == p.age;

    }

属性相同,结果为true

public class equal {
    public static void main(String[] args) {
        Person one = new Person("张三",20);
        Person two = new Person("张三",20);
        System.out.println(one.equals(two));
    }
}

快捷键
在这里插入图片描述
在这里插入图片描述

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        //getClass() != o.getClass()使用反射技术判断o是否为Person类型
        if (o == null || getClass() != o.getClass()) return false;
        Person person = (Person) o;
        return age == person.age &&
                Objects.equals(name, person.name);
                //Objects.equals(a,b)可以防止a.equals(b)发生空指针异常
    }

发布了90 篇原创文章 · 获赞 1 · 访问量 2073

猜你喜欢

转载自blog.csdn.net/wangzilong1995/article/details/103018111
今日推荐