equals方法
package next11;
import java.util.Date;
import java.util.GregorianCalendar;
public class EmployeeTest {
public static void main (String [] args){
Employee alice1= new Employee("Alice Adams", 75000, 1987, 12, 15);
Employee alice2 = alice1;
Employee alice3= new Employee("Alice Adams", 75000, 1987, 12, 15);
Employee bob = new Employee("Bob Brandson", 50000, 1989, 10, 1);
System.out.println("alice1 == alice2 "+(alice1 == alice2));
System.out.println("alice1 == alice3 "+(alice1 == alice3));
System.out.println("alice1 equals(alice3) "+alice1.equals(alice3));
System.out.println("alice1 equals(bob) "+alice1.equals(bob));
System.out.println("bob.toString "+bob);
}
}
class Employee{
private String name;
private double salary;
private Date hireDay;
public Employee(String n,double s,int year,int month,int day){
name = n;
salary = s;
GregorianCalendar calendar = new GregorianCalendar(year,month -1,day);
hireDay = calendar.getTime();
}
public Date getHireDay() {
return hireDay;
}
public String getName() {
return name;
}
public double getSalary() {
return salary;
}
public void raiseSlary(double byPercent){
double raiseSalary = salary*byPercent/100;
salary +=raiseSalary;
}
public boolean equals (Object otherObject){
if(this == otherObject) return true;//这一句要怎么理解?本类对象与otherObject引用的对象一致?alice1.equals(alice3)套上的话又该怎么具体分析呢?
//Object otherObject = alice3?如果是这样,所指的对象应该不同呀。有点卡住了,呵呵
if(otherObject==null) return false;
if(this.getClass()!=otherObject.getClass()) return false;
Employee other =(Employee)otherObject;
return name.equals(other.name)
&&salary == other.salary
&&hireDay.equals(other.hireDay);
}
public int hashCode(){
return 7*name.hashCode()
+11*new Double(salary).hashCode()
+13*hireDay.hashCode();
}
public String toString(){
return getClass().getName()
+"[name="+name
+",salary="+salary
+",hireDay="+hireDay
+"]";
}
}
class Manager extends Employee{
private double bonus;
public Manager(String n,double s,int year,int month,int day){
super(n,s,year,month,day);
bonus = 0;
}
public double getSalary() {
double baseSalary = super.getSalary();
return super.getSalary()+baseSalary;
}
public void setBonus(double b){
bonus =b;
}
public boolean equals(Object otherObject){
if(!super.equals(otherObject)) return false;
Manager other = (Manager)otherObject;
return bonus == other.bonus;
}
public int hashCode(){
return super.hashCode()
+17*new Double(bonus).hashCode();
}
public String toString(){
return super.toString()
+"[bonus="+bonus
+"]";
}
}
...全文
相关推荐
重写equals方法
"equals 方法重写详解"在 Java 中,equals 方法是一个非常重要的方法,它用于判断两个对象是否相等,而不是判断两个对象的引用是否相同。
重写equals和hashcode方法_equals_重写equals和hashcode方法_
以下是对`equals()` 和 `hashCode()` 方法的详细解释及其重写的重要性。**1. equals() 方法**`equals()` 方法用于比较两个对象是否相等。
Java equals()方法使用详解及总结
Java equals()方法使用详解及总结Java 中的 equals() 方法是一个非常重要的方法,它用于比较两个对象是否相等。
java中重写equals()方法的同时要重写hashcode()方法(详解)
Java 中重写 equals() 方法的同时要重写 hashCode() 方法的重要性在 Java 中,equals() 方法和 hashCode() 方法是两个紧密相关的方法,它们都是用于比较和标识对象的方法
Java重写equals及hashcode方法流程解析
一、equals方法equals方法是Java中Object类的一个方法,用于比较两个对象的内存地址是否相等。


Java SE
