TL; DR Не использовать ==
для сравнения строк.
В частности, в отношении строк, да, ==
это немного быстрее, чем equals
, потому что первое, что делает метод String.equals
, это ... сравнение ==
, чтобы увидеть, сравнивается ли строка с самой собой. Если это так, equals()
медленнее, чем стоимость вызова метода. Если это не так, equals
медленнее на эту стоимость плюс стоимость сравнения символов в строках.
Но помните, что прежде чем использовать ==
для сравнения строк (что является плохой идеей ™), вы должны точно знать, что обе строки интернированы. Комбинация intern()
и ==
на не быстрее, чем equals()
. intern()
- это относительно дорогая операция, так как она включает поиск эквивалентной строки, уже находящейся в пуле стажеров, что может включать в себя множество equals()
вызовов (или их эквивалентов).
Может быть несколько крайне редкие крайние случаи, когда разумно взять на себя intern()
стоимость, а затем использовать ==
для строк, которые, как вы знаете, интернированы. Например, если у вас большой набор строк c, который вы сравниваете друг с другом действительно часто. Но это крайне необычная крайняя ситуация.
Итог: не сравнивайте строки с ==
. Не интернируйте строки без необходимости.