Java中的equals()是一個非常重要的方法,它在比較兩個對象是否相等時發揮著重要作用。equals()方法實際上是Object類的一個方法,但是在許多類中都被重寫了,例如String、Integer等等。
當我們使用equals()方法比較兩個對象時,它實際上比較的是它們在內存中的地址是否相等。如果這兩個對象是同一對象,即它們具有相同的地址,則equals()方法會返回true。但是,如果這兩個對象的地址不同,equals()方法會調用對象的equals()方法進行比較,判斷它們的內容是否相等。
// 以下是一個簡單的例子 String str1 = "Hello"; String str2 = "Hello"; String str3 = new String("Hello"); System.out.println(str1.equals(str2)); // true System.out.println(str1.equals(str3)); // true
在上面的代碼中,我們創建了三個字符串對象:str1和str2是類似字面量的字符串,它們在內存中具有相同的地址,所以使用equals()方法比較會返回true;而str3使用new關鍵字創建了一個新的String對象,它的內存地址是獨立的,但與str1的內容相同,所以也返回true。
值得注意的是,在比較兩個對象時,最好先判斷它們的類型是否相同,以避免錯誤。例如,如果我們比較一個String和一個Integer對象,由于它們的類型不同,會導致程序出現錯誤。所以在比較之前,最好加入這樣一句代碼:
if(obj.getClass() != this.getClass()) return false;
這樣做可以確保比較的兩個對象類型相同,避免出現錯誤。