Как сравнить две строки в Java
⚡ Умное резюме
Сравнение двух строк в Java Это можно сделать с помощью нескольких методов, которые сопоставляют последовательность символов на равенство или порядок. В этом ресурсе описаны семь подходов, включая методы String equals, Objects equals, compareTo, методы StringUtils, оператор == и пользовательский метод сравнения, каждый с примерами.

Методы сравнения строк в Java
Java предоставляет различные методы, которые вы можете использовать для сравнения двух строк в Java. Сравнение строк в Java — это функция, которая сопоставляет последовательность символов со строкой.
Чтобы научиться сравнивать строки в JavaВы можете использовать методы, предоставляемые следующими классами:
- Класс String из пакета java.lang.
- Класс Objects из пакета java.util.
- Класс StringUtils из пакета org.apache.commons.lang3.
Большинство из них Java Методы сравнения строк позволяют игнорировать регистр. В этом руководстве вы узнаете о различных методах, которые можно использовать для сравнения двух строк.
Метод 1: метод String Equals()
Java строка equals () метод сравнивает два строковых объекта на предмет равных строковых значений.
Синтаксис:
public boolean equals(Object anObject)
Параметры методаquals():
anObject – строка аргумента для сравнения строк.
Типы возвращаемых методом методаquals()
- Возвращает true, если предоставленный строковый литерал совпадает с первой строкой.
- Возвращает false, если первая строка не совпадает со строкой аргумента.
Пример:
public class CompareTwoStrings {
public static void main(String[] args) {
String stringOne = "Guru99";
String stringTwo = "Guru99";
System.out.println("is Guru99 equal to Guru99: "+stringOne.equals(stringTwo));
String stringThree = "GURU99";
System.out.println("is Guru99 equal to GURU99: "+stringOne.equals(stringThree));
}
}
Ожидаемый результат:
is Guru99 equal to Guru99: true is Guru99 equal to GURU99: false
Объяснение:
- В последнем выводе вы получили false, потому что указанный объект имеет другой регистр.
Примечание: Для сравнения строк с учетом регистра используйте метод `equals()`. Для сравнения строковых объектов без учета регистра используйте метод `equalsIgnoreCase`.
Метод 2: метод Objectsquals()
Java Объекты равны() Метод сравнивает два строковых объекта, чтобы определить, имеют ли они одинаковые значения.
Синтаксис:
public static boolean equals(Object a, Object b)
Параметры методаquals()
a – строка аргумента для первого строкового объекта.
b – строка аргумента для второго строкового объекта.
Типы возвращаемых методом методаquals()
- Возвращает true, если строковые литералы равны. Передача нулевого значения в двух аргументах также вернет true.
- Возвращает false, если строковые литералы не равны.
Пример:
import java.util.Objects; public class CompareTwoStrings { public static void main(String[] args) { String stringOne = "Guru99"; String stringTwo = "Guru99"; System.out.println("is Guru99 equal to Guru99: " + Objects.equals(stringOne, stringTwo)); String stringThree = null; String stringFour = null; System.out.println("is Guru99 equal to Guru99: " + Objects.equals(stringThree, stringFour)); } }
Выход:
is Guru99 equal to Guru99: true is Guru99 equal to Guru99: true
Объяснение:
Из этого примера видно, что на выходе получается логическое значение true, поскольку сравниваемые строки равны.
Метод 3: метод сравнения строк()
Java Строка сравненияTo() метод сравнивает две строки в алфавитном порядке. Обычно его называют лексикографическим порядком.
Синтаксис:
public int compareTo(String str)
Параметры метода CompareTo()
str – строка для сравнения с текущей строкой.
Метод CompareTo() возвращает
- 0 — возвращает ноль, если указанный объект равен текущей строке.
- < 0 — возвращает число меньше нуля, если эта строка меньше указанного объекта.
- > 0 — возвращает число больше нуля, если эта строка превышает предоставленную строку.
Пример:
public class CompareTwoStrings {
public static void main(String[] args) {
String stringOne = "Guru99";
String stringTwo = "Guru99";
System.out.println("is Guru99 equal to Guru99: " + stringOne.compareTo(stringTwo));
String stringThree = "GURU99";
// u = 117, U = 85, result = 117-85 = 32
System.out.println("is Guru99 equal to GURU99: " + stringOne.compareTo(stringThree));
}
}
Ожидаемый результат:
is Guru99 equal to Guru99: 0 is Guru99 equal to GURU99: 32
Объяснение:
Первый результат возвращает значение ноль, поскольку первая и вторая строки равны.
Второй результат возвращает значение тридцать два, поскольку символы отличаются.
Примечание: Чтобы игнорировать регистр, можно использовать метод «compareToIgnoreCase».
Метод 4: метод StringUtils равно()
Java StringUtils равно() метод сравнивает равенство двух последовательностей символов.
Убедитесь, что вы добавили библиотеку “org.apache.commons.lang3” в свою программу. Это позволит вам сравнивать строки с помощью методов StringUtils.
Для проектов Maven используйте это инструкция чтобы добавить библиотеку в проект.
Однако, если вы хотите добавить библиотеку без каких-либо инструментов сборки, используйте этот способ. инструкция.
Синтаксис:
public static boolean equals(CharSequence cs1, CharSequence cs2)
Параметры метода StringUtils равенства()
- cs1 — последовательность символов для первого аргумента.
- cs2 — последовательность символов для второго аргумента.
Метод StringUtils Equals() возвращает результат.
- Возвращает true, если сравниваемые строки равны. Это также относится к случаю, когда в обоих аргументах передается значение null.
- Возвращает false, если сравнение строк не равно.
Пример:
import org.apache.commons.lang3.StringUtils; public class CompareTwoStrings { public static void main(String[] args) { String stringOne = "Guru99"; String stringTwo = "Guru99"; System.out.println("is Guru99 equal to Guru99: " + StringUtils.equals(stringOne, stringTwo)); String stringThree = "GURU99"; System.out.println("is Guru99 equal to GURU99: " + StringUtils.equals(stringOne, stringThree)); } }
Выход:
is Guru99 equal to Guru99: true is Guru99 equal to GURU99: false
Объяснение:
Поскольку содержимое первой и второй строк одинаково, результат возвращает true.
Вы можете использовать метод «equalsIgnoreCase», чтобы игнорировать регистр.
Метод 5: метод StringUtils равноAny()
Java StringUtils равноAny() метод проверяет, существует ли строка в аргументах.
Синтаксис:
public static boolean equalsAny(CharSequence string, CharSequence... searchStrings)
Параметры метода StringUtils =Any()
- строка – строковое значение для первого аргумента. Аргумент также может иметь нулевое значение.
- searchStrings — набор строковых аргументов, позволяющий методу определить, присутствует ли первая строка аргумента.
Метод StringUtils EqualsAny() возвращает результат.
- Возвращает true, если искомая строка существует среди заданного количества строк поиска. Это относится и к случаю, когда оба аргумента равны null.
- Возвращает значение false, если сопоставляемая строка не соответствует ни одной строке из переменного количества строк поиска.
Пример:
import org.apache.commons.lang3.StringUtils; public class CompareTwoStrings { public static void main(String[] args) { String stringOne = "Guru99"; String[] stringTwo = new String[] { "Guru99", "JavaGuru99" }; System.out.println("is Guru99 available: " + StringUtils.equalsAny(stringOne, stringTwo)); String[] stringThree = new String[] { "GURU99", "JavaGuru99" }; System.out.println("is GURU99 available: " + StringUtils.equalsAny(stringOne, stringThree)); } }
Выход:
is Guru99 available: true is GURU99 available: false
Объяснение:
Поскольку содержимое первой и второй строк одинаково, результат возвращает true. Вы можете использовать метод «equalsAnyIgnoreCase», чтобы игнорировать регистр.
Способ 6: использование оператора ==
Оператор == в строках проверяет, имеют ли ссылки на объекты одинаковый адрес.
Пример:
public class CompareTwoStrings {
public static void main(String[] args) {
String stringOne = "Guru99";
String stringTwo = "Guru99";
System.out.println("is Guru99 == to Guru99: " + (stringOne == stringTwo));
String stringThree = "GURU99";
System.out.println("is Guru99 == to GURU99: " + (stringOne == stringThree));
}
}
Ожидаемый результат:
is Guru99 == to Guru99: true is Guru99 == to GURU99: false
Объяснение:
- Первый результат возвращает логическое значение true. Строки с одинаковым содержимым добавляются в один и тот же пул строк, поэтому строки используют один и тот же адрес.
- Второй результат возвращает логическое значение false. Объекты имеют различное содержимое, что приводит к использованию разных пулов строк. Это означает, что строки имеют отдельные ссылки на объекты; следовательно, результат равен false.
Способ 7. Создание собственного метода для сравнения двух строк Java
Создайте метод, который сравнивает две строки, используя лексикографический порядок.
Синтаксис:
public static int compareTwoStrings(String str1, String str2)
Параметры пользовательского метода
- str1 – строка для сравнения.
- str2 – строка для сравнения.
Возврат пользовательского метода
- 0 — возвращает ноль, если первая строка равна второй строке.
- < 0 — возвращает число меньше нуля, если первая строка меньше второй строки.
- > 0 — возвращает число больше нуля, если первая строка больше второй строки.
Пример:
public class CompareTwoStrings {
public static int compareTwoStrings(String stringOne, String stringTwo) {
int lengthOfStringOne = stringOne.length();
int lengthOfStringTwo = stringTwo.length();
int minStringLength = Math.min(lengthOfStringOne, lengthOfStringTwo);
for (int i = 0; i < minStringLength; i++) {
char stringOneCharValue = stringOne.charAt(i);
char stringTwoCharValue = stringTwo.charAt(i);
if (stringOneCharValue != stringTwoCharValue) {
return stringOneCharValue - stringTwoCharValue;
}
}
if (lengthOfStringOne != lengthOfStringTwo) {
return lengthOfStringOne - lengthOfStringTwo;
} else {
return 0;
}
}
public static void main(String[] args) {
String stringOne = "Guru99";
String stringTwo = "Guru99";
System.out.println("is Guru99 equal to Guru99: " + compareTwoStrings(stringOne, stringTwo));
}
}
Ожидаемый результат:
is Guru99 equal to Guru99: 0
Объяснение:
Результат вернул нулевое значение, что означает, что пользовательская функция работает должным образом.
