我正在学习String intern()方法,并且知道intern()可以帮助我使用equals()方法上的“ ==”运算符来比较String对象,并且某些文档引用得更快。是不是
答案 0 :(得分:5)
TL; DR 请勿使用==
来比较字符串。
特别是对于字符串,是的,==
比equals
稍快,因为String.equals
方法要做的第一件事是... a ==
比较,以查看字符串是否与自身进行比较。如果是,则equals()
会因方法调用的开销而变慢。如果不是,则equals
的费用要比该费用加上比较字符串中字符的费用要慢。
但是请记住,在使用==
比较字符串(这是一个坏主意™)之前,必须确定要同时两个字符串被拘留。 intern()
和==
的组合不比equals()
快。 intern()
是一项相对昂贵的操作,因为它涉及查找内部存储池中已经存在的等效字符串,这可能涉及很多equals()
调用(或其等效调用)。
在某些 极其罕见 极端情况下,有理由引起intern()
的花费,然后在您知道的字符串上使用==
是合理的实习生。例如,如果您有一组较大的静态字符串,则经常真的进行比较。但这是一种极为不寻常的边缘情况。
底线:请勿将字符串与==
进行比较。不要不必要地实习字符串。