Как сравнить две строки в Java
Методы сравнения строк в Java
Java предоставляет различные методы, которые вы можете использовать для сравнения двух строк в Java. Сравнение строк в Java — это функция, которая сопоставляет последовательность символов со строкой.
Чтобы научиться сравнивать строки в Java, вы можете использовать методы, предоставляемые следующими классами.
- Строковый класс из Java.lang-пакет.
- Класс объектов из Javaпакет .util.
- Класс StringUtils из пакета org.apache.commons.lang3.
Большинство из них Java Методы сравнения строк имеют решения для игнорирования регистра. В этом 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, потому что указанный объект имеет другой регистр.
Внимание: используйте метод строкового равенства для сравнения строк с учетом регистра. Используйте метод «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» в свою программу. Это позволит вам сравнивать строки с помощью методов StringUtil.
Для проектов Maven используйте это инструкция чтобы добавить библиотеку в проект.
Однако, если вы хотите добавить библиотеку без каких-либо инструментов сборки, используйте этот инструкция.
Синтаксис:
public static boolean equals(CharSequnce cs1, CharSequence cs2)
Параметры метода StringUtils равенства()
- cs1 — последовательность символов для первого аргумента.
- cs2 — последовательность символов для второго аргумента.
Метод StringUtils Equals() возвращает результат.
- Возвращает true, если сравнение строк равно. Это применимо, если вы передаете нулевое значение в двух аргументах.
- Возвращает 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, если соответствующая строка существует в переменном количестве строк поиска. Это применимо, если оба аргумента равны нулю.
- Возвращает значение 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. Объекты имеют разное содержимое, что приводит к созданию других пулов строк. Это означает, что строки имеют отдельные ссылки на объекты; таким образом, вывод является ложным.
Способ 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
Объяснение:
Результат вернул нулевое значение, что означает, что пользовательская функция работает должным образом.
Резюме:
Команда Java Выбор метода сравнения двух строк зависит от следующих факторов.
- Желание контролировать свой метод. В этом случае создайте собственный метод.
- Вы не можете использовать устаревший код. с Java 6 и ниже.
- Метод, который имеет оптимальную производительность.
- Тип данных, с которыми вы работаете. Например, сопоставление строки из набора переменных аргументов.
- Функции, предоставляемые сторонней библиотекой. Например, библиотека StringUtils предоставляет различные методы для сравнения строк.