Якщо ви схожі на мене, коли я вперше почав використовувати Java, я хотів скористатися оператором "==", щоб перевірити, чи рівні два екземпляри String, але в кращому чи гіршому випадку, це не правильний спосіб зробити це на Java.
У цьому підручнику я продемонструю кілька різних способів правильно порівняти рядки Java, починаючи з підходу, яким я користуюся більшу частину часу. Наприкінці цього посібника зі порівняння рядків Java я також обговорюю, чому оператор "==" не працює при порівнянні рядків Java.
Варіант 1: Порівняння рядків Java з методом рівних
Більшу частину часу (можливо, 95% часу) я порівнюю рядки з методом рівних класу Java String, як це:
if (string1.equals(string2))
Цей метод String equals розглядає два рядки Java, і якщо вони містять абсолютно однаковий рядок символів, вони вважаються рівними.
Подивившись на швидкий приклад порівняння рядків із методом рівних, якщо запустити наступний тест, два рядки не вважатимуться рівними, оскільки символи не однакові (справа символів відрізняється):
String string1 = "foo";
String string2 = "FOO";
if (string1.equals(string2))
{
// this line will not print because the
// java string equals method returns false:
System.out.println("The two strings are the same.")
}
Але, коли два рядки містять абсолютно однаковий рядок символів, метод рівняння поверне справжнє значення, як у цьому прикладі:
String string1 = "foo";
String string2 = "foo";
// test for equality with the java string equals method
if (string1.equals(string2))
{
// this line WILL print
System.out.println("The two strings are the same.")
}
Варіант 2: Порівняння рядків із методом equalsIgnoreCase
У деяких тестах порівняння рядків ви хочете ігнорувати, чи є рядки великими або малими літерами. Коли ви хочете перевірити свої рядки на рівність таким нечутливим до випадку способом, використовуйте метод equalsIgnoreCase класу String, наприклад:
String string1 = "foo";
String string2 = "FOO";
// java string compare while ignoring case
if (string1.equalsIgnoreCase(string2))
{
// this line WILL print
System.out.println("Ignoring case, the two strings are the same.")
}
Варіант 3: Порівняння рядків Java з методом CompareTo
Існує також третій, менш поширений спосіб порівняння рядків Java, і це з методом String class CompareTo. Якщо два рядки абсолютно однакові, метод CompareTo поверне значення 0 (нуль). Ось короткий приклад того, як виглядає цей підхід для порівняння рядків:
String string1 = "foo bar";
String string2 = "foo bar";
// java string compare example
if (string1.compareTo(string2) == 0)
{
// this line WILL print
System.out.println("The two strings are the same.")
}
Поки я пишу про цю концепцію рівності на Java, важливо зазначити, що мова Java включає метод рівних у базовий клас Java Object. Щоразу, коли ви створюєте свої власні об'єкти і хочете надати засоби, щоб побачити, чи два екземпляри вашого об'єкта "рівні", вам слід перекривати (і реалізовувати) цей метод рівних у вашому класі (так само, як і мова Java ця поведінка рівності / порівняння у методі String дорівнює).
Ви можете переглянути це ==, .equals (), порівняти до () і порівняти ()