判断 ==与equals的方法
代码演示:
package com.hapedu;
import com.sun.javafx.binding.StringFormatter;
import java.util.Objects;
public class Test {
public static void main(String[] args) {
Employee e1 = new Employee(1001, "张三");
Employee e2 = new Employee(1002, "李四");
System.out.println(e1);//打印默认调用toString()
System.out.println(e1 == e2);//两个对象是否相等
System.out.println(e1.equals(e2));//两个对象是否相等(逻辑上进行某些值的计较)
}
}
class Employee {
int id;
String name;
public Employee(int id, String name) {
this.id = id;
this.name = name;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Employee employee = (Employee) o;
return id == employee.id &&
Objects.equals(name, employee.name);
}
@Override
public int hashCode() {
return Objects.hash(id, name);
}
}
总结:
==:
比较两个对象是否相同
equals:
e1 和e2 中 id 和 name 全部属性相同时,也就是没重写equals()方法
输出结果:false
①e1 和e2 中 id 和name 全部属性相同,并重写 id 和 name 的 equals() 方法
输出结果:true
②id 相同,name不同,重写 id 的 equals()方法
输出结果:true
③id不同,name同,重写name 的equals()方法
输出结果:true
显然:代码中的结果是:false,false
①
②
③