Java: Сравнение строк - Как это делается и как использовать?
В Java для сравнения строк используется метод equals() класса String. Данный метод сравнивает все символы строк между собой, и если они полностью совпадают, то возвращает true, если же строки отличаются хотя бы в одном символе, то возвращает false. Например:
String str1 = "hello";
String str2 = "hello";
String str3 = "world";
boolean isEqual1 = str1.equals(str2); // true
boolean isEqual2 = str1.equals(str3); // false
Также в Java есть возможность сравнивать строки без учета регистра с помощью метода equalsIgnoreCase(). Например:
String str1 = "Hello";
String str2 = "hello";
boolean isEqual1 = str1.equals(str2); // false
boolean isEqual2 = str1.equalsIgnoreCase(str2); // true
Также в Java можно сравнивать строки по лексикографическому порядку с помощью метода compareTo(). Этот метод сравнивает символы строк поочередно, начиная с первого, и возвращает целое число, которое показывает соотношение между этими строками. Если первая строка "меньше" второй, то метод вернет отрицательное число, если "больше", то положительное, а если строки равны, то 0. Например:
String str1 = "bcd";
String str2 = "abc";
int result = str1.compareTo(str2); // результат будет положительным, т.к. bcd > abc
Также есть возможность производить сравнение строк с помощью операторов == и !=, но это не рекомендуется, т.к. эти операторы сравнивают ссылки на объекты, а не сами объекты.
Например, если создать два объекта класса String с одинаковыми значениями, то оператор == вернет false, т.к. это разные объекты в памяти:
String str1 = new String("hello");
String str2 = new String("hello");
boolean isEqual = (str1 == str2); // false
Но если использовать метод equals(), то результат будет true, т.к. метод сравнивает значения строк, а не ссылки на объекты:
boolean isEqual = str1.equals(str2); // true