Сравнение строк в 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