Главная chevron_right Переменные и константы chevron_right Типы данных chevron_right compareTo()

compareTo()

Метод compareTo() лексикографически сравнивает две строки String и возвращает отрицательное, нулевое или положительное число — удобно для сортировки строк.

Полная статья

Описание

Метод compareTo() позволяет определить, как две строки соотносятся друг с другом в алфавитном (лексикографическом) порядке. Сравнение идёт посимвольно по кодам ASCII: сначала проверяется первый символ, затем второй и так далее, пока не найдётся различие или не закончится одна из строк.

Важно понимать, как устроена таблица ASCII: цифры ('0''9') стоят раньше букв, заглавные буквы ('A''Z') — раньше строчных ('a''z'). Поэтому "Apple" окажется «меньше» "apple", а "123" — «меньше» "abc".

Этот метод удобен, когда нужно не просто проверить равенство строк, а упорядочить их — например, отсортировать список имён или команд.

Синтаксис

myString.compareTo(myString2)

Параметры

  • myString: переменная типа String — строка, у которой вызывается метод.
  • myString2: переменная типа String — строка, с которой производится сравнение.

Возвращает

  • a negative number: если myString предшествует myString2 в лексикографическом порядке.
  • 0: если строка равна myString2.
  • a positive number: если myString идёт после myString2.

Конкретное числовое значение — это разница кодов ASCII первых различающихся символов. На практике важен лишь знак результата, а не его абсолютная величина.

Где применяется

  • Сортировка строк — например, упорядочивание массива команд или имён пользователей перед выводом на дисплей.
  • Обработка ввода — проверка, что введённая строка лексически не выходит за допустимые границы (например, пароль должен быть «не раньше» определённого значения).
  • Поиск в отсортированном массиве — бинарный поиск по массиву строк требует именно такого сравнения.
  • Валидация протоколов — разбор команд, которые должны идти в строго определённом порядке.

Практические замечания

  • Сравнение чувствительно к регистру: "hello" и "Hello" не равны. Если регистр не важен, приведите обе строки к одному с помощью toLowerCase() перед сравнением.
  • Пустая строка "" считается «меньше» любой непустой строки.
  • Если одна строка является префиксом другой ("cat" и "cats"), более короткая считается «меньшей».
  • Метод не изменяет ни одну из строк — он только возвращает числовой результат.
  • Для простой проверки равенства удобнее использовать метод equals() — он нагляднее и не требует проверки знака результата.