日期:2014-05-20  浏览次数:20622 次

equals方法
本帖最后由 longer5153458 于 2013-08-27 23:37:38 编辑
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()