拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 Java 中的 String equals() 与 contentEquals()

Java 中的 String equals() 与 contentEquals()

白鹭 - 2022-03-07 2313 0 2

一、介绍

Java 中String类的equals()contentEquals()方法String比较。但是,这两种方法的功能之间存在特定差异。

在本教程中,我们将使用实际示例快速了解这两种方法之间的差异。

equals()方法

equals()方法是JavaStringpublic它覆盖了Object类中equals()方法。这个方法的签名是:

public boolean equals(Object anObject)

单个方法用来来比较两个不同的字符串。但是,该方法不仅会检查内容,还会检查对像是否是String的实例。因此,该方法仅在满足所有这些条件true

  • 参数对像不为null

  • 它是一个String对象

  • 字符序列相同

3.contentEquals()方法

equals()方法contentEquals()方法也用于比较String's内容。但是,与equals()方法不同,contentEquals() CharSequence接口的任何实现作为参数。这意味着可以比较StringStringBufferStringBuilderCharBuffer,Segment

这个方法的签名是:

public boolean contentEquals(StringBuffer sb)
 public boolean contentEquals(CharSequence cs)

因此,contentEquals()方法只关心string 的内容如果参数是String对象,equals()方法进行比较。另一方面,如果提供了通用字符序列,则该方法比较相似位置的单个字符。

如果给定参数中的字符序列与原始String匹配,则该方法返回trueequals()方法不同,如果将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()方法,它为我们提供了更严格的检查条件。


标签:

0 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *