equals()方法覆盖
-
比较两个引用是否指向同一个对象
-
判断obj是否为null
-
判断两个引用指向的实际对象类型是否一致。
-
强制类型转换
-
依次比较各个属性值是否相同
-
案例
public class Student { //定义两个属性 private String name; private int age; //定义 get set 方法 和有参无参构造 public String getName() { return name; } public int getAge() { return age; } public void setName(String name) { this.name = name; } public void setAge(int age) { this.age = age; } public Student(String name, int age) { this.name = name; this.age = age; } public Student() { } @Override public String toString() { return "name:"+name+"+"+"age:"+age; } @Override public boolean equals(Object obj) { //1.判断两个对象是否是同一个引用。 if(this==obj){ return true; } //2.判断obj是否为null if (obj==null){ return false; } //判断是否是同一个类型 使用instanceof if (obj instanceof Student){ //强制类型转换 Student s=(Student)obj; //比较数据 if (this.name.equals(s.getName())&& this.age==s.getAge()){ return true; } } return false; }
main
public class TestClass { public static void main(String[] args) { System.out.println("------------getClass ()方法--------------"); //getClass ()方法 Student s1 = new Student("李XX",18); Student s2 = new Student("王XX",19); Class c1=s1.getClass(); Class c2=s2.getClass(); if(c1==c2){ System.out.println("s1和s2类型一样"); } else{ System.out.println("s1和s2类型不一样"); } System.out.println("------------hashCode()方法--------------"); //hashCode()方法 System.out.println(s1.hashCode()); System.out.println(s2.hashCode()); System.out.println("------------toString()方法--------------"); //toString()方法 System.out.println(s1.toString()); System.out.println(s2.toString()); System.out.println("------------equals()方法--------------"); //equals()方法 System.out.println(s1.equals(s2)); //false Student s5=new Student("xx",12); Student s6=new Student("xx",12); System.out.println(s5.equals(s6)); //true } }