Как сравнить равенство строк в Java
Часто задаваемые вопросы о сравнении строк в Java: Можете ли вы поделиться несколькими примерами того, как сравнивать строки в Java?
Если вы похожи на меня, когда я впервые начал использовать Java, я хотел использовать оператор ==
, чтобы проверить, равны ли два экземпляра String
, но это неправильный способ сделать это в Java.
В этом руководстве я покажу несколько различных способов правильного сравнения строк Java, начиная с подхода, который я использую чаще всего. В конце этого урока я также расскажу, почему 9Оператор 0005 == не работает при сравнении строк Java.
Решение 1. Сравнение строк Java с методом equals
Большую часть времени — может быть, 95% времени — я сравниваю строки Java с методом equals
класса String, например:
если (строка1.равно(строка2))
Метод String equals
просматривает две строки Java, и если они содержат одну и ту же строку символов, они считаются равными.
Взгляните на пример быстрого сравнения строк с методом равно
. Если бы был запущен следующий тест, две строки не считались бы равными, потому что символы не совсем одинаковы (регистр символов отличается ):
Строка string1 = "foo"; Строка string2 = "FOO"; если (строка1.равно(строка2)) { // эта строка не будет напечатана, потому что // метод java string equals возвращает false: System.out.println("Эти две строки одинаковые") }
Но когда две строки содержат точно такую же строку символов , метод равно
вернет true, как в этом примере:
Строка string1 = "foo"; Строка string2 = "foo"; // проверка на равенство с помощью метода java string equals если (строка1.равно(строка2)) { // эта строка БУДЕТ напечатана System.out.println("Эти две строки одинаковые") }
Решение 2. Сравнение строк с помощью метода equalsIgnoreCase
В некоторых тестах сравнения строк вы захотите игнорировать, являются ли строки прописными или строчными . Если вы хотите проверить свои строки на равенство без учета регистра, используйте метод equalsIgnoreCase
класса String
, например:
Строка string1 = "foo"; Строка string2 = "FOO"; // сравнение строк java без учета регистра если (string1.equalsIgnoreCase(string2)) { // эта строка БУДЕТ напечатана System.out.println("Без учета регистра, две строки одинаковые") }
Решение 3. Сравнение строк Java с помощью метода ‘compareTo’
Существует также третий, менее распространенный способ сравнения строк Java, а именно метод
сравнения класса String. Если две строки абсолютно одинаковы, метод compareTo
вернет значение 0 (ноль). Вот краткий пример того, как выглядит этот подход сравнения строк:
Строка string1 = "foo bar";
Строка string2 = "foo bar";
// пример сравнения строк java
если (string1.compareTo(string2) == 0)
{
// эта строка БУДЕТ напечатана
System.out.println("Эти две строки одинаковые")
}
(Вкратце: я не использовал этот подход уже много лет.