java比較兩個對象是否相等


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不是同一個人");
        }
    }

結果如下所示:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM