Як порівняти два рядки в Java
Методи порівняння рядків Java
Java надає різні методи, якими можна скористатися для порівняння двох рядків Java. Порівняння рядків в Java це функція, яка зіставляє послідовність символів із рядком.
Щоб навчитися порівнювати рядки в Java, ви можете використовувати методи, надані наступними класами.
- Клас String з Javaпакет .lang.
- Клас об'єктів від Javaпакет .util.
- Клас StringUtils з пакету org.apache.commons.lang3.
Більшість з них Java Методи порівняння рядків мають рішення для ігнорування регістру. У цьому Java Підручник, ви дізнаєтеся про різні методи, які можна використовувати для порівняння двох рядків.
Метод 1: метод String equals().
Кнопка Java рядок метод equals(). порівнює два рядкові об’єкти для однакових рядкових значень.
Синтаксис:
public boolean equals(Object anObject)
Параметри методу equals():
anObject – Рядок аргументу для порівняння рядків.
типи повернення методу equals().
- Повертає 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: Метод Objects equals().
Кнопка Java Об'єкти дорівнюють() метод порівнює два рядкові об’єкти, щоб визначити, чи мають вони однакові значення.
Синтаксис:
public static boolean equals(Object a, Object b)
параметри методу equals().
a – рядок аргументів для першого рядкового об’єкта.
b – Рядок аргументів для другого рядкового об’єкта.
типи повернення методу equals().
- Повертає 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: метод String compareTo().
Кнопка Java Рядок compareTo() метод порівнює два рядки в алфавітному порядку. Його зазвичай називають лексикографічним порядком.
Синтаксис:
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 equals().
Кнопка Java StringUtils дорівнює() метод порівнює рівність двох послідовностей символів.
Переконайтеся, що ви додали бібліотеку «org.apache.commons.lang3» у свою програму. Це дозволить вам порівнювати рядки за допомогою методів StringUtil.
Для проектів Maven використовуйте це керівництво щоб додати бібліотеку до проекту.
Однак, якщо ви хочете додати бібліотеку без жодних інструментів збірки, скористайтеся цим керівництво.
Синтаксис:
public static boolean equals(CharSequnce cs1, CharSequence cs2)
Параметри методу StringUtils equals().
- 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 equalsAny().
Кнопка Java StringUtils дорівнює будь-якому() метод перевіряє, чи існує рядок в аргументах.
Синтаксис:
public static boolean equalsAny(CharSequence string, Charsequence… searchStrings)
Параметри методу StringUtils equalsAny().
- рядок – рядкове значення для першого аргументу. Аргумент також може мати нульове значення.
- 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 надає різні методи для порівняння рядків.