如何比较Java中的字符串?


如何比较Java中的字符串?

== 测试参考相等性(它们是否是同一个对象)。

.equals() 价值平等的测试(它们在逻辑上是否“相等”)。

Objects.equals() null在调用之前检查,.equals()因此您不必(从JDK7开始,也可以在Guava中使用)。

String.contentEquals() 将其内容String与任何内容CharSequence(自Java 1.5以来可用)进行比较。

因此,如果要测试两个字符串是否具有相同的值,则可能需要使用它Objects.equals()。

// These two have the same value
new String("test").equals("test") // --> true

// ... but they are not the same object
new String("test") == "test" // --> false

// ... neither are these
new String("test") == new String("test") // --> false

// ... but these are because literals are interned by
// the compiler and thus refer to the same object
"test" == "test" // --> true

// ... string literals are concatenated by the compiler
// and the results are interned.
"test" == "te" + "st" // --> true

// ... but you should really just call Objects.equals()
Objects.equals("test", new String("test")) // --> true
Objects.equals(null, "test") // --> false
Objects.equals(null, null) // --> true

你几乎总想用Objects.equals()。在极少数情况下,您知道自己正在处理实习字符串,您可以使用==。