Разница между String.isEmpty () и String.equals ("") - PullRequest
19 голосов
/ 26 июля 2011

Я создал «Выбор цвета» с тремя текстовыми полями, где пользователь определяет значения rgb.
Чтобы проверить правильность введенных значений (только цифры от 0 до 255), я использую следующее:

public Color getColor() {
    if (tfRed.getText().equals("") || tfGreen.getText().equals("") || tfBlue.getText().equals("")) {
                return new Color(0, 0, 0, 0);
    } else {
        if (tfRed.getText().matches("\\d+") && tfGreen.getText().matches("\\d+") && tfBlue.getText().matches("\\d+")) {
            // ...
        } else {
            return new Color(0, 0, 0, 0);
        }
    }
}

Что я спрашиваю: лучше использовать String.isEmpty()? Я никогда не находил удовлетворительного ответа, и я всегда задавался вопросом, есть ли разница.

Ответы [ 12 ]

0 голосов
/ 22 ноября 2016

String.equals ("") немного медленнее, чем просто вызов isEmpty (). Строки хранят переменную count, инициализированную в конструкторе, поскольку строки являются неизменяемыми.

isEmpty () сравнивает переменную count с 0, в то время как equals проверит тип, длину строки, а затем перебирает строку для сравнения, если размеры совпадают.

Итак, чтобы ответить на ваш вопрос, isEmpty () на самом деле сделает намного меньше! и это хорошо.

0 голосов
/ 05 августа 2013

Я всегда использовал .isEmpty() ... до сегодняшнего дня, когда обнаружил, что его нет в Java 5.

Итак:

  • В Java 6 и новее, у нас есть выбор, и я рекомендую использовать .isEmpty(), его легче писать и чище читать.
  • В Java 5 и старше мы должны использовать .equals("").
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...