Я смотрел на некоторый код GWT, написанный различными людьми и существуют различные способы сравнить строки. Мне любопытно, если это - просто выбор стиля, или если Вы более оптимизированы, чем другой:
"".equals(myString);
myString.equals("");
myString.isEmpty();
Существует ли различие?
"".equals(myString);
не вызовет исключение NullPointerException
, если myString
имеет значение NULL. Вот почему многие разработчики используют эту форму.
myString.isEmpty();
- лучший способ, если myString
никогда не имеет значения NULL, потому что он объясняет, что происходит. Компилятор может оптимизировать это или myString.equals ("")
, так что это скорее выбор стиля. isEmpty ()
показывает ваше намерение лучше, чем equals ("")
, поэтому обычно это предпочтительнее.
Имейте в виду, что isEmpty()
был добавлен в Java 6, и, к сожалению, все еще есть люди, которые довольно громко жалуются, если вы не поддерживаете Java 1.4.
apache StringUtils предоставляет некоторые удобные методы, ну, ну, для манипуляций со строками.
проверьте этот метод и связанные с ним.
Обе опции, использующие "", могут требовать создания временного объекта String, а функция .isEmpty () - нет.
Если они удосужились поместить в него функцию .isEmpty (), я скажу, что лучше всего ее использовать!
myString.isEmpty (), вероятно, лучше всего, если вы работаете над последней версией Java (1.6). Вероятно, он будет работать лучше, чем myString.equals (""), поскольку ему нужно проверить только одну строку.
"". Equals (myString) имеет свойство не генерировать исключение нулевого указателя, если myString имеет значение NULL. Однако только по этой причине я бы избегал этого, поскольку обычно лучше быстро выйти из строя, если вы столкнетесь с неожиданным состоянием. В противном случае будет очень сложно отследить небольшую ошибку в будущем .....
myString.equals ("") - наиболее естественный / идиоматический подход для людей, желающих сохранить совместимость со старыми версиями Java, или тех, кто просто хотят быть очень точными в отношении того, с чем они сравнивают.