Сравнение строк в Java — методы equals, compareTo и == с примерами

В этой программе мы научимся сравнивать две строки в Java.

Пример 1: сравнение двух строк

public class CompareStrings {

    public static void main(String[] args) {

        String style = "Bold";
        String style2 = "Bold";

        if(style == style2)
            System.out.println("Equal");
        else
            System.out.println("Not Equal");
    }
}

Вывод:

Equal

В программе выше у нас две строки: style и style2. Мы просто используем оператор равенства (==) для сравнения двух строк, который сравнивает значение Bold с Bold и выводит Equal.


Пример 2: сравнение двух строк с помощью equals()

public class CompareStrings {

    public static void main(String[] args) {

        String style = new String("Bold");
        String style2 = new String("Bold");

        if(style.equals(style2))
            System.out.println("Equal");
        else
            System.out.println("Not Equal");
    }
}

Вывод:

Equal

В программе выше у нас две строки style и style2, обе содержат одно и то же слово Bold.

Однако для создания строк мы использовали конструктор String. Чтобы сравнивать такие строки в Java, нужно использовать метод equals().

Предупреждение

Не следует использовать == (оператор равенства) для сравнения таких строк, потому что он сравнивает ссылки на строки, то есть указывает, один и тот же это объект или нет.

С другой стороны, метод equals() сравнивает, равны ли значения строк, а не сами объекты.

Если изменить программу и использовать оператор равенства, мы получим Not Equal, как показано в следующей программе.


Пример 3: сравнение двух строковых объектов с помощью == (не работает)

public class CompareStrings {

    public static void main(String[] args) {

        String style = new String("Bold");
        String style2 = new String("Bold");

        if(style == style2)
            System.out.println("Equal");
        else
            System.out.println("Not Equal");
    }
}

Вывод:

Not Equal

Пример 4: разные способы сравнения двух строк

Вот возможные варианты сравнения строк в Java:

public class CompareStrings {

    public static void main(String[] args) {

        String style = new String("Bold");
        String style2 = new String("Bold");

        boolean result = style.equals("Bold"); // true
        System.out.println(result);

        result = style2 == "Bold"; // false
        System.out.println(result);

        result = style == style2; // false
        System.out.println(result);

        result = "Bold" == "Bold"; // true
        System.out.println(result);
    }
}

Вывод:

true
false
false
true