JAVA的相等測試

來源:互聯網
上載者:User
import java.util.*;/** * This program demonstrates the equals method. * @version 1.11 2004-02-21 * @author Cay Horstmann */public class EqualsTest{   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);      Manager carl = new Manager("Carl Cracker", 80000, 1987, 12, 15);      Manager boss = new Manager("Carl Cracker", 80000, 1987, 12, 15);      boss.setBonus(5000);      System.out.println("boss.toString(): " + boss);      System.out.println("carl.equals(boss): " + carl.equals(boss));      System.out.println("alice1.hashCode(): " + alice1.hashCode());      System.out.println("alice3.hashCode(): " + alice3.hashCode());      System.out.println("bob.hashCode(): " + bob.hashCode());      System.out.println("carl.hashCode(): " + carl.hashCode());      System.out.println("boss.hashCode(): " + boss.hashCode());   }}class Employee{   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 String getName()   {      return name;   }   public double getSalary()   {      return salary;   }   public Date getHireDay()   {      return hireDay;   }   public void raiseSalary(double byPercent)   {      double raise = salary * byPercent / 100;      salary += raise;   }   public boolean equals(Object otherObject)   {      // a quick test to see if the objects are identical      if (this == otherObject) return true;      // must return false if the explicit parameter is null      if (otherObject == null) return false;      // if the classes don't match, they can't be equal      if (getClass() != otherObject.getClass()) return false;      // now we know otherObject is a non-null Employee      Employee other = (Employee) otherObject;      // test whether the fields have identical values      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            + "]";   }   private String name;   private double salary;   private Date hireDay;}class Manager extends Employee{   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 baseSalary + bonus;   }   public void setBonus(double b)   {      bonus = b;   }   public boolean equals(Object otherObject)   {      if (!super.equals(otherObject)) return false;      Manager other = (Manager) otherObject;      // super.equals checked that this and other belong to the same class      return bonus == other.bonus;   }   public int hashCode()   {      return super.hashCode() + 17 * new Double(bonus).hashCode();   }   public String toString()   {      return super.toString() + "[bonus=" + bonus + "]";   }   private double bonus;}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.