Java | Сравнение строк

Часто в программах Java необходимо сравнение строк. В Java можно сравнивать одну строку с другой. Для этого используется метод compareTo. Подробнее о нем с примерами в этой статье.

При сравнении строк Java будет использовать шестнадцатеричные значения, а не сами буквы.

Например, если вы хотите сравнить слово «Ape» со словом «App», чтобы увидеть, что должно стоять на первом месте, вы можете использовать встроенный строковый метод, который называется compareTo. Посмотрим, как это работает.

Для этого вам не нужно начинать новый проект: просто закомментируйте (или удалите) предыдущий код. Теперь добавьте следующий код:

package prjstrings;

public class StringManipulation {

    public static void main(String[] args) {
        
        int result;
        String Word1 = "Ape";
        String Word2 = "App";
        
        result = Word1.compareTo(Word2);
        
        if(result < 0) {
            System.out.println(Word1 + " перед " + Word2);
        }
        else if(result > 0) {
            System.out.println(Word1 + " после " + Word2);          
        }
        else if(result == 0) {
            System.err.println("Слова подобные");
        }
    }
    
}

Мы настроили две переменные String, содержащие слова «Ape» и «App». Метод compareTo (строка в приведенном выше коде):

result = Word1.compareTo(Word2);

Метод CompareTo производит сравнение строк и возвращает значение. Возвращаемое значение будет больше 0, меньше 0 или равно 0. Если Word1 предшествует Word2, то возвращаемое значение будет меньше 0. Если Word1 идет после Word2, возвращаемое значение будет больше 0. Если два слова идентичны, будет возвращено значение 0.

Таким образом, вам нужно присвоить значение, которое CompareTo возвращает переменной. Мы помещаем это значение в целочисленную переменную с именем result. Операторы if в коде просто проверяет, что находится в переменной result.

Но, при сравнении одной строки текста с другой, Java сравнивает базовые шестнадцатеричные значения, а не фактические буквы. Поскольку заглавные буквы имеют шестнадцатеричное значение ниже, чем строчные, заглавная буква «A» в «App» будет стоять перед строчной буквой «a» в «ape». Попробуйте сами. Измените «Ape» на «ape» в своем коде. Выходные данные будут читать «Word1 после Word2», что означает, что Java поместит слово «ape» после слова «app» в алфавитном порядке.

Чтобы решить эту проблему, есть связанный метод, называемый compareToIgnoreCase. Как следует из названия, строчные и прописные буквы игнорируются:

result = Word1.compareToIgnoreCase(Word2);

И при сравнении строк «ape» будет первым в алфавитном порядке.

Далее мы рассмотрим еще один полезный метод String - indexOf.

Дата обновления: 09.08.2019

  • Текущий 0.00/5
  • 1
  • 2
  • 3
  • 4
  • 5

/Рейтинг: 0.0/5 (0 голос(ов) всего)

Добавить комментарий (без регистрации)