2014-11-24 2 views
4

Возникает ли влияние на производительность, если str является java.lang.String, с использованием "String".equals(str) против str.equals("String")? Моя кишка говорит: «Нет, JVM/компилятор оптимизирует литеральную строку в любом случае», но я вижу, что первый стиль обрезается достаточно в разных кодовых базах, и он выглядит так неестественно (по крайней мере для меня), поэтому я решил, что там должно быть причиной помимо стиля.str.equals («String») vs «String» .equals (str)

ответ

7

Единственная причина для использования "String".equals(str) (что я считаю уродливым) - это лень, так как это избавляет вас от необходимости проверять, что str != null до звонка str.equals("String").

Оценка производительности не должна быть никакой разницы. Вы сравниваете два экземпляра String в любом случае.

0
"String".equals(str) 

Не дает тот же результат, как

str.equals("String") 

, если str == null.

В первом случае он возвращает false, а во втором он выбрасывает NullPointerException.

"String".equals(str) 

Является ли на самом деле эквивалентно

str != null && str.equals("String") 
Смежные вопросы