如何比较Java中的字符串? 什么是NullPointerException 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()。在极少数情况下,您知道自己正在处理实习字符串,您可以使用==。 什么是NullPointerException Java是“引用传递”还是“按值传递”?