在Java編程中,equals()是一個(gè)用于比較對(duì)象的方法。它用于比較兩個(gè)對(duì)象是否相等,并返回一個(gè)布爾值。通常情況下,開發(fā)者需要重寫該方法以滿足業(yè)務(wù)需求。
在Java中,所有類都繼承自O(shè)bject類。Object類中包含一個(gè)equals()方法,其默認(rèn)實(shí)現(xiàn)如下:
public boolean equals(Object obj) { return (this == obj); }
上述實(shí)現(xiàn)僅僅檢查了傳入的對(duì)象是否是當(dāng)前對(duì)象。當(dāng)我們自定義一個(gè)類并希望比較兩個(gè)該類的對(duì)象是否相等時(shí),通常需要覆寫equals()方法。
我們可以自定義equals()方法來比較兩個(gè)對(duì)象是否相等。通常情況下,我們需要比較對(duì)象中的屬性是否相等。以下是一個(gè)自定義的Student類的實(shí)現(xiàn):
class Student { String name; int age; String major; public boolean equals(Object obj) { if(obj == this) {//如果是同一個(gè)對(duì)象 return true; } if(!(obj instanceof Student)) {//如果不是同一個(gè)類型的對(duì)象 return false; } //強(qiáng)制類型轉(zhuǎn)換 Student student = (Student) obj; //比較屬性值是否相等 return name.equals(student.name) && age == student.age && major.equals(student.major); } }
在上述代碼中,我們進(jìn)行了以下幾個(gè)步驟:
- 首先判斷傳入的對(duì)象是否與當(dāng)前對(duì)象相等,如果是則直接返回true。
- 然后判斷傳入的對(duì)象是否是Student類的實(shí)例,如果不是則返回false。
- 如果傳入的對(duì)象是Student類的實(shí)例,則強(qiáng)制類型轉(zhuǎn)換為Student類型。
- 最后比較兩個(gè)對(duì)象的屬性值是否相等,如果相等則返回true,否則返回false。
通過自定義equals()方法,我們可以在比較兩個(gè)對(duì)象時(shí)比較它們的屬性值,而不是比較它們的引用。