1. Student类
2. MethodEquals类
(1)成员变量
①姓名(name)
②年龄(age)
③性别(gender)
(2)构造器(又称构造方法)
①说明:快速生成构造方法的快捷键为“Alt + Insert”,后选择“Constructor”。
②构造方法的分类:
a.无参构造函数
b.有参构造函数
③作用:
用来对对象进行初始化。
(3)成员方法(重写 Object类的方法)
①public String toString()
a. 快速生成的快捷键为“Alt + Insert”。一般重写父类方法的快捷键为“Ctrl + O”。但这里toString、 equals、hashCode方法的重写一般使用“Alt + Insert”。
b. toString方法如果没有重写,那么输出一个对象的toString方法,得到的结果是“包名+类名+@+哈希值的16进制”。
②public boolean equals(Object o)
a.快速生成的快捷键为“Alt + Insert”
b.Object类是所有类的父类,因此也称为超类。
c.如果equals方法没有在子类中重写时,主程序中两个对象比较的是“内存地址”。重写后可选择对象比较的属性。
③public int hashCode()
- //2022.7.26
- import java.util.Objects;
-
- public class Student {
- private String name;
- private int age;
- private char gender;
-
- //构造器
-
- public Student() {
- }
-
- public Student(String name, int age, char gender) {
- this.name = name;
- this.age = age;
- this.gender = gender;
- }
-
-
- //toString 方法重写
-
- @Override
- public String toString() {
- return "Student{" +
- "name='" + name + '\'' +
- ", age=" + age +
- ", gender=" + gender +
- '}';
- }
- //重写equals与hascode方法
-
- @Override
- public boolean equals(Object o) {
- if (this == o) return true;
- if (o == null || getClass() != o.getClass()) return false;
- Student student = (Student) o;
- return age == student.age &&
- gender == student.gender &&
- name.equals(student.name);
- }
-
- @Override
- public int hashCode() {
- return Objects.hash(name, age, gender);
- }
- }
(1)作用:
主程序的入口,用来测试equals方法。
(2)代码分析:
①创建了三个学生对象,并进行初始化。
②先用“==”比较了两个对象是否相等。注:此处“==”是比较两个对象在内存中的地址是否相等。
③后使用equals方法进行比较两个对象是否相等。
- //2022.7.26
- public class MethodEquals {
- public static void main(String[] args) {
- Student s1 = new Student("张三", 23, '男');
- Student s2 = new Student("张三", 23, '男');
- Student s3 = new Student("张三", 26, '男');
-
- //下面这三个比较的是地址
- System.out.println(s1 == s2);
- System.out.println(s1 == s3);
- System.out.println(s2 == s3);
-
- //使用equals方法进行比较
- System.out.println(s1.equals(s2));
- System.out.println(s1.equals(s3));
- }
- }

可知,equals方法重写后,比较的是重写方法中两个对象 的属性值。