比较字符串时等于或 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,因此您可以节省执行时间那张支票。但即使执行速度会变慢,这也不应该是您做出决定的第一点。首先是为了可读性。