Как сравнить две строки в 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 предоставляет различные методы для сравнения строк.