Автор оригинала: Pankaj Kumar.
Метод Java String compareTo() используется для лексикографического сравнения двух строк. Этот метод объявлен в сопоставимом интерфейсе. Поскольку строка реализует сопоставимый интерфейс, она обеспечивает реализацию метода compareTo ().
Сравнение строк Java
Класс Java String имеет два варианта метода compareTo ()
.
compareTo(Строка другой строки)
: Этот метод compareTo сравнивает объект String со строковым аргументом, переданным лексикографически.Если строковый объект предшествует переданному аргументу, он возвращает отрицательное целое число, а если строковый объект следует за переданной строкой аргумента, он возвращает положительное целое число.
Он возвращает 0, если обе строки имеют одинаковое значение, в этом случае
равно(String str)
метод вернет значение true.Сравнение основано на значении Юникода каждого символа в строках. Вам следует проверить исходный код класса String, чтобы проверить, как работает этот метод.
compareToIgnoreCase(String str)
: Этот метод сравнения аналогичен первому, за исключением того, что он игнорирует регистр. Он использует строкуCASE_INSENSITIVE_ORDER
|/Компаратор для сравнения без учета регистра. Если возвращаемое значение этого метода равно 0, тоequalsIgnoreCase(String str)
вернет значение true. Этот метод возвращает отрицательное целое число, ноль или положительное целое число, поскольку указанная строка больше, равна или меньше этой строки, игнорируя соображения регистра.
Пример сравнения строк Java
Давайте посмотрим небольшой класс java, объясняющий использование методов сравнения строк java.
package com.journaldev.util; public class StringCompareToExample { /** * This class show String compareTo examples * @param args */ public static void main(String[] args) { String str = "ABC"; System.out.println(str.compareTo("DEF")); System.out.println(str.compareToIgnoreCase("abc")); } }
Результаты приведенного выше примера программы compareTo показаны ниже.
Выше отрицательный результат объясняется тем, что “ABC” лексикографически меньше, чем “DEF”. Вывод равен -3, потому что он сравнивает значения символов одно за другим. Вы также можете подтвердить это с помощью приведенной ниже тестовой программы.
public class Test { public static void main(String[] args) { char a = 'A'; char d = 'D'; System.out.println(a-d); //prints -3 } }
Поэтому, когда “ABC” сравнивается с “DEF”, сравнивается символ с первым индексом. Поскольку они разные, и ” A “лексикографически предшествует “D”, оно возвращает отрицательное целое число с разницей между ними, следовательно, вывод -3.
Поэтому, если вы сравните “ABC” с “AD BC”, то также получите тот же результат, что и -3. Это все для примера метода Java String compareTo (). Обратите внимание, что этот метод не совпадает с методом String equals ().
Ссылка: Официальная документация Oracle