Java 中的 String equals() 與 contentEquals()
- java
一、介紹
Java 中String類的equals()和contentEquals()方法String比較。但是,這兩種方法的功能之間存在特定差異。
在本教程中,我們將使用實際示例快速了解這兩種方法之間的差異。
equals()方法
equals()方法是 Java String類public它覆蓋了Object類中equals()方法。這個方法的簽名是:
public boolean equals(Object anObject)
單個方法用來來比較兩個不同的字符串。但是,該方法不僅會檢查內容,還會檢查對像是否是String的實例。因此,該方法僅在滿足所有這些條件true
- 參數對像不為
null - 它是一個
String對象 - 字符序列相同
3. contentEquals()方法
與equals()方法contentEquals()方法也用於比較String's內容。但是,與equals()方法不同, contentEquals() CharSequence接口的任何實現作為參數。這意味著可以比較String 、 StringBuffer 、 StringBuilder 、 CharBuffer,或Segment
這個方法的簽名是:
public boolean contentEquals(StringBuffer sb)
public boolean contentEquals(CharSequence cs)
因此, contentEquals()方法只關心 string 的內容。如果參數是String對象, equals()方法進行比較。另一方面,如果提供了通用字符序列,則該方法比較相似位置的單個字符。
如果給定參數中的字符序列與原始String匹配,則該方法返回true 。與equals()方法不同,如果將null參數傳遞給contentEquals()方法,則會拋出NullPointerException 。
4. 例子
讓我們通過編寫簡單的測試用例來看看這兩種方法的實際效果。為簡單起見,讓我們在代碼中使用“Baeldung”一詞。
首先,我們將獲取兩個相同的String對象並檢查它們。在這種情況下,兩種方法都將返回一個true值:
String actualString = "baeldung";
String identicalString = "baeldung";
assertTrue(actualString.equals(identicalString));
assertTrue(actualString.contentEquals(identicalString));
接下來,我們採用具有相同內容的CharSequence對於第一個實現,我們將使用String CharSequence 。在這種情況下,兩種方法都應該返回true因為內容和類型是相同的:
CharSequence identicalStringInstance = "baeldung";
assertTrue(actualString.equals(identicalStringInstance));
assertTrue(actualString.contentEquals(identicalStringInstance));
對於下一個示例,我們將採用StringBuffer實現。由於contentEquals()方法只檢查內容,它應該返回true 。但是, equals()方法應該是false :
CharSequence identicalStringBufferInstance = new StringBuffer("baeldung");
assertFalse(actualString.equals(identicalStringBufferInstance));
assertTrue(actualString.contentEquals(identicalStringBufferInstance));
5. 結論
在本文中,我們快速瀏覽了String類的兩個方法。雖然equals()方法只比較String實例,但contentEquals()方法可以比較CharSequence任何實現。
總而言之,當我們只關心對象的內容時,我們應該使用contentEquals()另一方面,有時檢查對象的類型可能很重要。在這種情況下,我們應該使用equals()方法,它為我們提供了更嚴格的檢查條件。