我正在学习 String intern() 方法并且知道 intern() 帮助我可以使用“==”运算符来比较 String 对象而不是 equals() 方法,并且一些文档更快地引用了它。不是吗?
TL;DR不要==用来比较字符串。
特别是关于字符串,是的,==是略快于equals,因为第一件事String.equals方法确实是......一个==比较,看看是否串正在与自己相比。如果是,equals()则由于方法调用的成本而变慢。如果不是,equals则该成本加上比较字符串中的字符的成本会变慢。
但请记住,在您可以使用==比较字符串之前(这是一个坏主意™),您必须确定两个字符串都已被插入。的组合intern()和==是不是比快equals()。intern()是一个相对昂贵的操作,因为它涉及寻找已经在实习生池中的等效字符串,这可能涉及大量equals()调用(或它们的等效调用)。
可能存在一些极其罕见的边缘情况,在这种情况下,产生该intern()成本然后==在您知道被实习的字符串上使用是合理的。举例来说,如果你有一个大的静态组字符串,你比较彼此真正频繁。但这是一种极其不寻常的边缘情况。
底线:不要将字符串与==. 不要不必要地实习字符串。