String#equals 和 String#contentEquals 方法之间的区别
String#equals
方法和 String#contentEquals
方法之间有什么区别?
String#equals
方法和 String#contentEquals
方法之间有什么区别?
String#equals()
不仅比较 String 的内容,还检查另一个对象是否也是 .String#contentEquals()
仅比较内容(字符序列),而不检查其他对象是否也是 的实例。它可以是任何东西,只要它是CharSequence
的实现,它涵盖了a.o. String
,StringBuilder
,StringBuffer
,CharBuffer
等。String
String
简单地说:String.contentEquals()
是String.equals()
更聪明的兄弟,因为它在实现中比String.equals()
更自由。
有一些原因可以解释为什么有一个单独的方法。我认为最重要的原因是:String.contentEquals()
equals
x.equals(y) == y.equals(x)
aString.equals(aStringBuffer)
aStringBuffer.equals(aString)
equals()
这就是进来的地方。这是一个独立的方法,不必遵循 严格的要求和规则。这样,您可以更自由地实现“平等内容”的感觉。例如,这允许您在 StringBuffer 和 String 之间进行智能比较。String.contentEquals
Object.equals
并说出究竟有什么区别:
String.contentEquals()
可以比较 a、a、a、a 和这些类的所有派生类的内容。如果参数的类型为 String,则执行。String
StringBuilder
StringBuffer
CharSequence
String.equals()
String.equals()
仅比较字符串对象。所有其他对象类型都被视为不相等。
String.contentEquals()
可以比较并以智能方式。它不调用重装方法,该方法将整个内容复制到新的 String 对象。相反,它与底层数组进行比较,这很棒。StringBuffer
StringBuilder
toString()
char[]