Java String.contains vs String.contentEquals

Java String.contains vs String.contentEquals,java,Java,这两种方法的真正区别是什么? 如果字符串包含作为参数给定的CharSequence,则两者都具有相同的签名并返回true,如果不包含则返回false 方法: boolean contains(CharSequence string) boolean contentEquals(CharSequence string) 使用contentEquals()时,参数必须与字符串完全相等;使用contains()只要参数在字符串中就足够了,字符串还可以包含其他字符 String foo = "foo

这两种方法的真正区别是什么? 如果字符串包含作为参数给定的
CharSequence
,则两者都具有相同的签名并返回
true
,如果不包含则返回
false

方法:

boolean contains(CharSequence string)

boolean contentEquals(CharSequence string)
使用
contentEquals()
时,参数必须与字符串完全相等;使用
contains()
只要参数在字符串中就足够了,字符串还可以包含其他字符

String foo = "foo";
StringBuffer str = new StringBuffer("foofoo");
StringBuffer str2 = new StringBuffer("foo");
foo.contains(str); // false
str.contains(foo); // true
foo.contentEquals(str) // false
foo.contentEquals(str2) // true
使用
contentEquals()
时,参数必须与字符串完全相等;使用
contains()
只要参数在字符串中就足够了,字符串还可以包含其他字符

String foo = "foo";
StringBuffer str = new StringBuffer("foofoo");
StringBuffer str2 = new StringBuffer("foo");
foo.contains(str); // false
str.contains(foo); // true
foo.contentEquals(str) // false
foo.contentEquals(str2) // true

考虑“ABCDE”。包含“bcd”,但其内容与“bcd”不同。在
contentEquals
的描述中,您在哪里看到了“contains”?(也许你在看老文档?@JonSkeet可能是,我在赫伯特·席尔德的书2015年第五版中看到了这两种方法的描述。它会被弃用吗?我不会在PC上验证实际的java文档,我认为它很可能不是一个非常好的描述。查看Javadocs可能是一个更好的计划。(作为一个旁注,我认为这是在提问之前要做的研究的一部分。你可能不能马上做这件事,但我认为在问这个问题上没有那么紧急。如果你想避免忘记检查和询问,我建议你发电子邮件提醒自己。)(基于第9版,而非第5版):如果调用字符串包含与STR相同的字符串,则返回true。否则,返回“false”。< /代码>与<代码>包含:如果调用对象包含由STR指定的字符串,则返回true。否则返回false。< /代码>您确定您不只是忽略了“代码< >相同的< /代码>吗?”考虑“ABCDE”。。其中包含“bcd”,但其内容与“bcd”不同。您在
contentEquals
的说明中看到了“contains”在哪里?(可能您正在查看旧文档?)@JonSkeet可能是,我在Herbert Schildt的书《2015年第五版y》中看到了这两种方法的描述。它会被弃用吗?我不会在PC上验证实际的java文档。我认为它更可能不是一个非常好的描述。查看java文档可能是一个更好的计划。(作为一个旁注,我认为这是在提问之前要做的研究的一部分。你可能不能马上做这件事,但我认为在问这个问题上没有那么紧急。如果你想避免忘记检查和询问,我建议你发电子邮件提醒自己。)(基于第9版,而非第5版):
contentEquals:如果调用字符串包含与str相同的字符串,则返回true。否则,返回false。
contains相比:如果调用对象包含str指定的字符串,则返回true。否则返回false。
您确定您没有忽略单词
same
?谢谢,伙计,您的答案是正确的,但是……看看第17章的赫伯特·席尔德,这些方法有相同的描述。它们有相同的签名,但它们做完全不同的工作。我提供的示例解释了它们的不同之处。contentEquals()将给出相同的contains()输出仅当两个字符串完全相等时。这是cointains()的子类是的,我们都知道…我猜这本书有一个打字错误,如果你愿意,你也可以检查一下。赫伯特·席尔德第五版16.2字符串方法列表第488页谢谢,伙计,你的答案是正确的,但是…看看第17章的赫伯特·席尔德,这些方法有相同的描述吗。它们有相同的签名,但它们完全不同租用作业。我提供的示例解释了它们之间的区别。contentEquals()仅在两个字符串完全相等时才会给出相同的contains()输出。这是cointains()的子类。是的,我们都知道……我猜这本书有一个打字错误,如果你愿意,你也可以检查它。Herbert Schildt fifth release 16.2字符串方法列表第488页