== 运算符比 equals() 更快吗?

log*_*sex -2 java string

我正在学习 String intern() 方法并且知道 intern() 帮助我可以使用“==”运算符来比较 String 对象而不是 equals() 方法,并且一些文档更快地引用了它。不是吗?

https://dzone.com/articles/string-interning-what-why-and

T.J*_*der 5

TL;DR不要==用来比较字符串。

特别是关于字符串,是的,==快于equals,因为第一件事String.equals方法确实是......一个==比较,看看是否串正在与自己相比。如果是,equals()则由于方法调用的成本而变慢。如果不是,equals则该成本加上比较字符串中的字符的成本会变慢。

请记住,在您可以使用==比较字符串之前(这是一个坏主意™),您必须确定两个字符串都已被插入。的组合intern()==不是比快equals()intern()是一个相对昂贵的操作,因为它涉及寻找已经在实习生池中的等效字符串,这可能涉及大量equals()调用(或它们的等效调用)。

可能存在一些极其罕见的边缘情况,在这种情况下,产生该intern()成本然后==在您知道被实习的字符串上使用是合理的。举例来说,如果你有一个大的静态组字符串,你比较彼此真正频繁。但这是一种极其不寻常的边缘情况。

底线:不要将字符串与==. 不要不必要地实习字符串。

  • @logbasex - 我在答案的倒数第二段中提到了一个(我后来添加了它,你可能没有看到它)。 (2认同)