Почему string.isEmpty() лучше, чем использование string.equals ("")?
Просто посмотрите на источник String#isEmpty()
:
public boolean isEmpty() {
return count == 0;
}
Он просто возвращает результат сравнения count
переменную хранящуюся как часть класса с 0
. Нет тяжелых вычислений. Значение уже есть.
В то время как метод String.equals()
делает много вычислений, а именно, типажей, ссылочного сравнения, сравнения длиной - String#equals(Object)
source code. Таким образом, чтобы избежать этих операций во время выполнения, вы можете просто использовать isEmpty()
для проверки пустых строк. Тем не менее, это было бы медленнее.
Примечание:Oracle Java 7 версия String.isEmpty()
использует value.length == 0
, так как это no more stores переменная count
и offset
. В openjdk-7, однако он все еще использует переменную count
.
Но все же вычисление value.length
будет немного быстрее, чем все эти операции в методе equals()
.
Помимо отличия в производительности, которая на самом деле не вызывает большой озабоченности, и разница, если таковая будет в любой момент, метод String.isEmpty()
кажется более понятным в отношении ваших намерений. Поэтому я предпочитаю использовать этот метод для проверки пустых строк.
И наконец, конечно, не верю на то, что вы видите. Просто сравните свой код с использованием обоих методов и посмотрите на какие-либо измеримые различия, если таковые имеются.
просто украшающий ваш код ... посмотрите на источник, 'isEmpty()' использует 'string.length == 0' ... – Lucas
Вероятно, скорость выполнения. Проблема в том, что каждая новая версия браузера заставляет ту или иную функцию занимать меньше времени для выполнения, поэтому разговор получает другой ответ в зависимости от того, когда это произошло. –