String#equals和String#contentEquals方法之间的区别
||
String#equals
方法和String#contentEquals
方法有什么区别?
没有找到相关结果
已邀请:
9 个回复
乐遣杀屎
不仅比较String的内容,还检查另一个对象是否也是
的实例。 “ 4”仅比较内容(字符序列),不检查其他对象是否也是“ 3”的实例。只要是涵盖A.o的
的实现,它就可以是任何东西。
,
,
,
等。
徘廷
的聪明兄弟,因为它在实现上比implementation12ѭ更自由。 有某些原因导致使用单独的“ 11”方法。我认为最重要的原因是:
方法必须自反。那意味着:
。这意味着
必须与as18ѭ相同。这将需要Java API开发人员在StringBuffer,StringBuilder和CharSequence的“ 19”方法中对String进行一些特殊的实现。这将是一团糟。 因此,这就是
出现的时候。这是一种独立的方法,不必遵循
的严格要求和规则。这样,您可以更自由地实现“平等内容”的感觉。例如,这使您可以在StringBuffer和String之间进行智能比较。 再说一下到底有什么区别:
可以比较
,a8ѭ,a9ѭ,a6ѭ以及它们所有派生类的内容。如果参数的类型为String,则执行
。
仅比较String对象。所有其他对象类型均视为不相等。
可以智能地比较
和
。它不会调用笨拙的“ 32”方法,该方法会将整个内容复制到新的String对象。相反,它与底层的“ 33”数组进行了比较,这很棒。
茂坦湿床够
有两种覆盖的方法,其中一种采用
,而另一些采用
。 他们之间的区别 如果提供的参数为
,则
将抛出NPE,但
将返回
仅在提供的参数为
时比较内容,否则在所有其他情况下将返回
,但另一方面
检查实现接口
的所有对象的内容。 您还可以调整代码,以使
返回错误的结果或想要的结果,方法是重写传递的参数的
方法,如下所示,但不能对
进行那些调整。 只要
包含任何3个字符长的
,下面的代码将始终生成
如果提供的参数是
并且两个
的长度相同但内容不相等,则
会比
慢。 例如,如果字符串是
和
,那么
将比
花费几乎两倍的执行时间。 如果两个字符串的内容长度都不相同,则在几乎所有可能的情况下,函数
的性能将优于then54。 还有一点要补充
对象中的
也将与
的内容进行比较并提供适当的结果,而
将返回
誓猎贰
: 让您检查给定字符串值与接口
的任何实现实例是否相等(例如
,
,
,
,
)
: 可让您仅使用
类型的任何实例检查给定字符串值的相等性 RTFC :) 由于阅读源代码是理解它的最佳方式,因此我将分享这两种方法的实现(自jdk 1.7.0_45起)
还有另一个String#contentEquals()方法:
剿畦缄饥小
类
方法仅进行does3ѭ比较。但是
类的检查扩展了
类,即
,
和
类(它们都是
类型)。
输出:
first stmt的输出为
,因为
不是
类型,因此
返回
,但是
检查所有类型的内容,如
,
,
,并且内容相同,因此为
。 如果提供的参数是
,则
将抛出
,但equal19ѭ将返回false,因为equals()检查instanceOf(
),如果参数是
,则返回false。
豆兢
和
是
类中的两种方法,用于将两个
和
与
进行比较。
的参数为
和
。
用于比较两个
,
用于比较
和
的内容。 方法
和
是
这是描述两种方法的代码
输出:
寒健
方法检查的是are3ѭ,
等某种字符序列的内容是否相同。
靛取糕奖穿
怪酞撩匹