关于equals方法

1.什么是equals方法?

equals() 方法用于将字符串与指定的对象比较。

语法:public boolean equals(Object anObject)

返回值:如果给定对象与字符串相等,则返回 true;否则返回 false。

2.什么时候应当重写对象的equals方法?

一般在需要进行值比较的时候,是需要重写对象的equals方法的。

在Java中,每个对象都继承于Object.如果不重写,则默认的equals代码如下所示:

public boolean euqals(Object obj){
 return this == obj;
}

equal默认是使用“==”来判断两个对象是否相等。

两个对象使用“==”比较的是对象的地址,只有两个引用指向的对象相同的时候,“==”才返回true。

3.重写equals方法,比较两个对象

比较两个对象整体的内容,要重写对象的equals方法

public static void main(String[] args){
	Person p1 = new Person();
	p1.setName("zhangsan");
	p1.setGender("三");
	p1.setAge(22);
	Person p2 = new Person();
	p2.setName("zhangsan");
	p2.setGender("三");
	p2.setAge(22);
	System.out.println(p1.equals(p2));
}
重写Person的equals方法
@Override
public boolean equals(Object obj) {
    if(this == obj){//引用的地址完全一样
        return true;
    }
    if(obj == null){//obj是空的
        return false;
    }
    if(getClass()!=obj.getClass()){//两者类型不一样
        return false;
    }
    Person p = (Person)obj;//强制类型转换,比较属性
    return name.equals(p.name)
            &&gender.equals(p.gender)
            &&age == p.age;
    
}

4.常见equals方法实现错误

public class Employee {
    public boolean equals(Employee other) {


    return Objects.equals(name, other.name) && salary ==other.salary && Objects.equals(hireDay, other.hireDay);
}
这个方法声明的显示参数类型是Employee,结果并没有覆盖Object中的equals方法,而是定义了一个完全无关的方法.为了避免发生类型错误,可以使用@override对覆盖超类的方法进行标记。
阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页