Сравнение строк Java: выбор стиля или оптимизация?

Я смотрел на некоторый код GWT, написанный различными людьми и существуют различные способы сравнить строки. Мне любопытно, если это - просто выбор стиля, или если Вы более оптимизированы, чем другой:

"".equals(myString);

myString.equals("");

myString.isEmpty();

Существует ли различие?

9
задан KevMo 13 July 2010 в 21:20
поделиться

5 ответов

"".equals(myString);

не вызовет исключение NullPointerException , если myString имеет значение NULL. Вот почему многие разработчики используют эту форму.

myString.isEmpty();

- лучший способ, если myString никогда не имеет значения NULL, потому что он объясняет, что происходит. Компилятор может оптимизировать это или myString.equals ("") , так что это скорее выбор стиля. isEmpty () показывает ваше намерение лучше, чем equals ("") , поэтому обычно это предпочтительнее.

14
ответ дан 4 December 2019 в 11:39
поделиться

Имейте в виду, что isEmpty() был добавлен в Java 6, и, к сожалению, все еще есть люди, которые довольно громко жалуются, если вы не поддерживаете Java 1.4.

5
ответ дан 4 December 2019 в 11:39
поделиться

apache StringUtils предоставляет некоторые удобные методы, ну, ну, для манипуляций со строками.

http://commons.apache.org/lang/api/org/apache/commons/lang/StringUtils.html#isBlank (java.lang.CharSequence)

проверьте этот метод и связанные с ним.

2
ответ дан 4 December 2019 в 11:39
поделиться

Обе опции, использующие "", могут требовать создания временного объекта String, а функция .isEmpty () - нет.

Если они удосужились поместить в него функцию .isEmpty (), я скажу, что лучше всего ее использовать!

-3
ответ дан 4 December 2019 в 11:39
поделиться

myString.isEmpty (), вероятно, лучше всего, если вы работаете над последней версией Java (1.6). Вероятно, он будет работать лучше, чем myString.equals (""), поскольку ему нужно проверить только одну строку.

"". Equals (myString) имеет свойство не генерировать исключение нулевого указателя, если myString имеет значение NULL. Однако только по этой причине я бы избегал этого, поскольку обычно лучше быстро выйти из строя, если вы столкнетесь с неожиданным состоянием. В противном случае будет очень сложно отследить небольшую ошибку в будущем .....

myString.equals ("") - наиболее естественный / идиоматический подход для людей, желающих сохранить совместимость со старыми версиями Java, или тех, кто просто хотят быть очень точными в отношении того, с чем они сравнивают.

0
ответ дан 4 December 2019 в 11:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: