比较字符串时等于或 contentEquals
equals or contentEquals when comparing strings
我可以看到 contentEquals
对于比较 char 序列很有用,但我找不到任何地方指定比较两个字符串时最好使用哪种方法。
Here 提到了两种方法之间的区别,但没有明确说明如何处理两个字符串。
我可以看出usng contentEquals
的一个优点是如果传入的变量改变了类型,就会抛出一个编译错误。缺点可能是执行速度。
我应该在比较字符串时始终使用 contentEquals
还是仅在有不同的对象扩展 CharSequence
时才使用它?
contentEquals()
的优点是支持实现 CharSequence
的对象。当你有一个 StringBuilder
时,调用 StringBuilder.toString()
只是为了稍后你可以使用 equals()
会很浪费。在这种情况下,contentEquals()
有助于避免分配新的 String
来进行比较。
比较两个 String
对象时只需使用 equals()
.
比较两个字符串的内容时应该使用String#equals
。如果对象之一不是字符串类型,则仅使用 contentEquals
。
1) 它不那么令人困惑。每个 Java 开发人员都应该知道该方法的作用,但 contentEquals
是一种更专业的方法,因此鲜为人知。
2) 它更快,正如您在 contentEquals
的实现中看到的那样,它在检查序列是否为 AbstractStringBuilder
类型后调用 equals
,因此您可以节省执行时间那张支票。但即使执行速度会变慢,这也不应该是您做出决定的第一点。首先是为了可读性。
我可以看到 contentEquals
对于比较 char 序列很有用,但我找不到任何地方指定比较两个字符串时最好使用哪种方法。
Here 提到了两种方法之间的区别,但没有明确说明如何处理两个字符串。
我可以看出usng contentEquals
的一个优点是如果传入的变量改变了类型,就会抛出一个编译错误。缺点可能是执行速度。
我应该在比较字符串时始终使用 contentEquals
还是仅在有不同的对象扩展 CharSequence
时才使用它?
contentEquals()
的优点是支持实现 CharSequence
的对象。当你有一个 StringBuilder
时,调用 StringBuilder.toString()
只是为了稍后你可以使用 equals()
会很浪费。在这种情况下,contentEquals()
有助于避免分配新的 String
来进行比较。
比较两个 String
对象时只需使用 equals()
.
比较两个字符串的内容时应该使用String#equals
。如果对象之一不是字符串类型,则仅使用 contentEquals
。
1) 它不那么令人困惑。每个 Java 开发人员都应该知道该方法的作用,但 contentEquals
是一种更专业的方法,因此鲜为人知。
2) 它更快,正如您在 contentEquals
的实现中看到的那样,它在检查序列是否为 AbstractStringBuilder
类型后调用 equals
,因此您可以节省执行时间那张支票。但即使执行速度会变慢,这也不应该是您做出决定的第一点。首先是为了可读性。