java比較兩個對象,可以通過重寫equals()實現。
1.比較對象時, ==比較的是地址,而equals()比較的是對象內容
2.重寫equals()方法必須重寫hashCode()
示例代碼如下:
Person.java
可以自動生成get()、set()、構造函數、equals()、hashCode等方法。
Idea選擇類的代碼,寫入屬性名,如下為name和age,然后右鍵-->Generate,就可以自動生成了。
eclipse類似。搜索下快捷鍵也可以自動生成。
public class Person { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Person person = (Person) o; if (age != person.age) return false; return name.equals(person.name); } @Override public int hashCode() { int result = name.hashCode(); result = 31 * result + age; return result; } }
ObjectEquals.java如下所示
public class ObjectEquals { public static void main(String[] args) { Person person1=new Person("lin",25); Person person2=new Person("lin",25); System.out.println("通過==比較對象:"); if(person1==person2) { System.out.println("person1和person2是同一個人"); }else { System.out.println("person1和person2不是同一個人"); } System.out.println("通過重寫equals()和hashCode()比較對象:"); if(person1.equals(person2)) { System.out.println("person1和person2是同一個人"); }else { System.out.println("person1和person2不是同一個人"); } }
結果如下所示:

