Java String.compareTo() сравнивает две строки лексикографически(в порядке словаря) с учетом регистра. Для сравнения без учета регистра используйте метод compareToIgnoreCase().
1. Строки в лексикографическом порядке
Если строка «string1» в словаре предшествует другой строке «string2», то при сравнении строк говорят, что string2 больше, чем «string1».
- string1 > string2 – «string1» следует ПОСЛЕ «string2» в словаре.
- string1 < string2 – «string1» стоит ПЕРЕД «string2» в словаре.
- string1 = string2 – «string1» и «string2» равны.
2. API String.compareTo()
Функция compareTo() принимает один аргумент типа String. Вторая строка — это сам объект String, для которого вызывается метод. Обратите внимание, что compareTo() выполняет сравнение строк на основе значения Unicode каждого символа в строках.
int result = string1.compareTo(string2);
Результатом этого метода является целочисленное значение, где –
- положительное целое число – строка1 лексикографически следует за строкой2.
- отрицательное целое число – string1 лексикографически предшествует string2.
- ноль – обе строки равны.
3. Программа Java для сравнения строк
Следующая программа Java сравнивает две строки с учетом регистра, используя метод compareTo(). Мы используем Hamcrest-соответствия для утверждения возвращаемых значений.
String name = "alex";//same stringassertThat(name.compareTo("alex"), equalTo(0));//Different casesassertThat(name.compareTo("Alex"), greaterThan(0));assertThat(name.compareTo("ALEX"), greaterThan(0));//Different stringsassertThat(name.compareTo("alexa"), lessThan(0));assertThat(name.compareTo("ale"), greaterThan(0));
4. Разница между compareTo() и equals()
Различия между методами compareTo() и equals() следующие:
- Метод compare() сравнивает лексикографически(упорядочивая по словарю), а equals() проверяет содержимое обеих строк, хотя оба метода чувствительны к регистру.
- Тип возвращаемого значения compareTo() — это целочисленный тип, заключающий, что строка больше, меньше или равна другой строке. Тип возвращаемого значения equals() — это логический, что означает, что содержимое обеих строк равно или нет.
Ссылка: Документация по Java String