java - 在JDK 1.6中,String的equals操作可以用==代替吗?

标签 java string equals

当我研究一些开源产品的源代码时,我发现如下代码:

if (a=="cluser")

a 是一个字符串变量。字符串equals操作可以用==代替吗?

最佳答案

您应该几乎从不使用==并且几乎总是使用equals()。如果两个字符串都引用同一个对象,它只会与 == 一起使用。 String 上有一个 intern() 方法可以为给定的字符串值返回相同的引用。字符串文字是隐式驻留的。只有当你有充分的理由时才应该使用 == 进行字符串比较,即使这样你也需要非常小心。

唯一好的理由是性能,而且很少会很重要。只优化一次您确定您需要这样做。否则通常不值得麻烦。如果您正在查看一些开源代码,他们可能会遇到这样一种情况,即比较处于非常紧密的循环中或被非常频繁地调用,优化可以提供帮助。或者它只是过早地优化并且看起来可能是安全的。

关于java - 在JDK 1.6中,String的equals操作可以用==代替吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5839196/

相关文章:

string - 在golang中使用==符号和使用循环比较字符串a是否等于字符串b,哪个性能更好?

Java:.contains 和 .equals

javascript - 如何在不破坏 HTML 标签的情况下将空格转换为 &nbsp?

java - 包含的对象在何处创建才能被视为组合或聚合,这重要吗?

java - 在哪里定义 @CircuitBreaker(name = BACKEND, FallbackMethod = "fallback") 的名称?

java - 了解我的素数计算和素数 JFrame 发生了什么

java - 在 Java 中查找可变数量的字符串数组的乘积

java - Java 字符串实习的替代方案

javascript - 如何比较两个忽略数组属性中元素顺序的json?

Java错误: Bad Operand Type for binary operator <