String类也有equals方法,该方法是比较字符串的内容(equals方法,默认被String类重写了)
重写Object类中的equals方法,快捷键:
然后一直点击next即可
最后删除重写的hashCode方法
package com.itheima.d9_api_object;
/**
* 目标:掌握Object类中equals方法的使用
*/
public class Test2 {
public static void main(String[] args) {
Student s1 = new Student("lxc",'男',19);
Student s2 = new Student("lxc",'男',19);
// 虽然s1和s2有有参构造器的内容一样,但是他们是两个新对象,都在堆内存中开辟了空间
// 内存地址不一样
// equals默认比较2个对象的地址是否相同
System.out.println(s1.equals(s2)); // flase对象地址不一样
System.out.println(s1 == s2); // == 也是比较地址
// 重写了equals方法,再次运行比较的就是对象内容
}
}
package com.itheima.d9_api_object;
import java.util.Objects;
public class Student { // extends Object 默认继承了Object类
private String name;
private char sex;
private int age;
public Student() {
}
public Student(String name, char sex, int age) {
this.name = name;
this.sex = sex;
this.age = age;
}
@Override
public boolean equals(Object o) {
// 官方定义的重写equals方法,用来比较内容
// 1.判断是否是同一个对象比较,如果是返回true
if (this == o) return true;
// 2. 如果0是null返回false 如果o不是学生类型返回false ...Student != ..Pig
if (o == null || getClass() != o.getClass()) return false;
// 3.说明o 一定是学术类而且不为null
Student student = (Student) o;
return sex == student.sex && age == student.age && Objects.equals(name, student.name);
}
/**
* 自己重写equals方法,自己定制相等规则,
* 两个对象的内容一样就认为是相等的
* s1.equals(s2)
* 比较者:s1 == this
* 被比较者: s2 ==》 o
* Object是祖宗类,可以传任何类型的对象
* 可以理解为所有的类都默认被Object继承,所以定义方法传参参数类型是
* Object o 代表可以接收所有的对象
*/
// @Override
// // 这里传入的参数,就是要比较的对象,然后进行强转
// public boolean equals(Object o){ // Object是祖宗类,可以传任何类型的对象
// // 判断o是不是学生类型
// if (o instanceof Student){
// // 上面判断出是学生类型则将o(传入的对象)强转为学生类
// // 由于要比较的对象o没有name成员,所以进行强转,可以调用name成员
// Student s2 = (Student) o;
// // 2.判断2个对象的内容是否一样
// // 这里的this代表s1,因为是s1这个对象调用的equals方法
// if (this.name.equals(s2.name) && this.age == s2.age
// && this.sex == s2.sex){
// // name 成员这里是字符串引用类型,所以比较内容用equals,age是基础类型
// // 所以用 ==
// return true;
// }else {
// return false; // 如果该对象成员不一样则返回false
// }
// }else {
// // 学生只能和学生比,否则返回一个false
// return false;
// }
// }
// 这里用快捷键的方法操作:
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", sex=" + sex +
", age=" + age +
'}';
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public char getSex() {
return sex;
}
public void setSex(char sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}