一、equals方法概述
在Java中,equals方法是Object類中的一個方法,用於比較兩個對象是否相等。在默認情況下,equals方法比較的是兩個對象是否引用同一個內存地址,也就是說比較的是兩個對象的地址,如果兩個對象的地址相同,那麼這兩個對象就相等,反之則不相等。但是在實際開發中,我們一般需要比較的是兩個對象的屬性是否相同,這時候就需要我們自定義equals方法,以便滿足我們的需求。
二、equals方法的默認實現
在Java中,如果我們沒有自定義equals方法,那麼默認的equals方法就是比較兩個對象的地址是否相同,其源碼如下:
public boolean equals(Object obj) { return (this == obj); }
可以看出,equals方法的默認實現就是比較兩個對象的地址是否相同。
三、equals方法的重寫
在實際開發中,我們需要比較的往往是對象的屬性是否相同,例如比較兩個Person對象是否相同,我們一般會比較這兩個Person對象的name和age屬性,那麼我們需要自定義equals方法,重寫默認的equals方法,在新的equals方法中比較兩個對象的屬性是否相同。
四、equals方法的實現步驟
1、比較對象是否為同一對象
首先需要判斷兩個對象是否為同一對象,如果是同一對象,那麼這兩個對象肯定是相等的,無需做後續比較,直接返回true。
public boolean equals(Object obj){ if(this == obj){ return true; } return false; }
2、比較對象類型
接下來需要進行對象類型的比較,如果兩個對象的類型不同,那麼這兩個對象肯定不相等,因為不同類型的對象之間無法進行屬性的比較。
public boolean equals(Object obj){ if(this == obj){ return true; } if(obj == null || this.getClass() != obj.getClass()){ return false; } return false; }
3、比較對象的屬性
最後需要比較對象的屬性是否相等,如果兩個對象的屬性相同,那麼這兩個對象就相等,反之則不相等。
public boolean equals(Object obj){ if(this == obj){ return true; } if(obj == null || this.getClass() != obj.getClass()){ return false; } Person person = (Person) obj; if(this.name.equals(person.getName()) && this.age == person.getAge()){ return true; } return false; }
五、完整示例代碼
下面是一個完整的Person類的示例,包含了equals方法的重寫。
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 obj){ if(this == obj){ return true; } if(obj == null || this.getClass() != obj.getClass()){ return false; } Person person = (Person) obj; if(this.name.equals(person.getName()) && this.age == person.getAge()){ return true; } return false; } }
六、equals方法的使用
在實際開發中,我們經常需要使用equals方法來比較兩個對象是否相等,例如:
public static void main(String[] args) { Person person1 = new Person("張三", 20); Person person2 = new Person("張三", 20); if(person1.equals(person2)){ System.out.println("person1和person2相等"); }else{ System.out.println("person1和person2不相等"); } }
結果為:
person1和person2相等
七、總結
在Java中,equals方法是用於比較兩個對象是否相等的方法。在默認情況下,equals方法比較的是兩個對象是否引用同一個內存地址,也就是說比較的是兩個對象的地址,如果兩個對象的地址相同,那麼這兩個對象就相等,反之則不相等。在實際開發中,一般需要比較的是兩個對象的屬性是否相同,這時候我們需要自定義equals方法,並重寫默認的equals方法,在新的equals方法中比較兩個對象的屬性是否相同。equals方法的實現步驟為:首先比較兩個對象是否為同一對象;其次比較對象的類型;最後比較對象的屬性。通過equals方法的重寫,我們可以實現對象的屬性比較,滿足我們實際開發中的需求。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/181543.html