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

时间:2020-02-23 12:56:27

标签: java string

我正在学习String intern()方法,并且知道intern()可以帮助我使用equals()方法上的“ ==”运算符来比较String对象,并且某些文档引用得更快。是不是

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

1 个答案:

答案 0 :(得分:5)

TL; DR 请勿使用==来比较字符串。

特别是对于字符串,是的,==equals 快,因为String.equals方法要做的第一件事是... a ==比较,以查看字符串是否与自身进行比较。如果是,则equals()会因方法调用的开销而变慢。如果不是,则equals的费用要比该费用加上比较字符串中字符的费用要慢。

但是请记住,在使用==比较字符串(这是一个坏主意™)之前,必须确定要同时两个字符串被拘留。 intern()==的组合equals()快。 intern()是一项相对昂贵的操作,因为它涉及查找内部存储池中已经存在的等效字符串,这可能涉及很多equals()调用(或其等效调用)。

在某些 极其罕见 极端情况下,有理由引起intern()的花费,然后在您知道的字符串上使用==是合理的实习生。例如,如果您有一组较大的静态字符串,则经常真的进行比较。但这是一种极为不寻常的边缘情况。

底线:请勿将字符串与==进行比较。不要不必要地实习字符串。