Java如何比较两个字符串

Java如何比较两个字符串
一、概述

之前,我一直在程序中使用== 运算符比较所有字符串。但是,我遇到了一个错误,将 == 改成了.equals()后,才修复了该错误。
== 和.equals() 之间的区别是什么? 什么时候应该使用它,不应该使用它?

二、详解

== 测试引用是否相等(它们是否是同一对象)。

.equals() 测试值是否相等(在逻辑上是否为“相等”)。

Objects.equals()在调用.equals()之前检查null。

如果要测试两个字符串是否具有相同的值,则可能要使用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()。在极少数情况下,您知道要处理内存中的缓存字符串,可以使用==。
 

如若转载,请注明出处:https://www.javaidea.cn/article/8183.html

(0)
上一篇 2022年2月7日 上午10:03
下一篇 2022年2月7日 上午10:03

相关推荐

发表评论

您的电子邮箱地址不会被公开。