一.equals的了解
重写前我们先了解一下equals这方法
equals属于object类中的方法,用于判断引用类类型的数据
二.为什么要进行重写
package Dome3;
public class StudentTest {
public static void main(String[] args) {
Student student2 =new Student("丽莎","女",18);
Student student3 =new Student("丽莎","女",18);
System.out.println(student3.equals(student2));
//返回值为false
}
}
为什么返回值会为false呢?
源码:
public boolean equals(Object obj) {
return (this == obj);
}
其实他比较的并不是类里面的数据而是比较了两者的地址;
三.代码实现
测试类
public class StudentTest {
public static void main(String[] args) {
Student student1 =new Student("张山","男",17);
Student student2 =new Student("丽莎","女",18);
Student student3 =new Student("丽莎","女",18);
System.out.println(student3.equals(student2)); //true
System.out.println(student1.equals(student2)); //false
}
}
Student类
import java.util.Objects;
public class Student {
private String name;
private String gender;
private int age;
public Student(String name, String gender, int age) {
this.name = name;
this.gender = gender;
this.age = age;
}
@Override
public boolean equals(Object o) {
//this 指的是点出equals的对象
//o 是传入的对象
//比较地址如果地址一样直接返回
if (this == o) return true;
// 判断o是否为Student 的实例
if (!(o instanceof Student)) return false;
// 将对象类型o强行转化为 Student;
Student student = (Student) o;
// 比较
return age == student.age && Objects.equals(name, student.name)
&& Objects.equals(gender, student.gender);
}