В этой статье вы узнаете, как сравнивать строки. Какая проблема возникает при сравнении строки с помощью оператора equals to (=).

Введение

String — это специальный класс в Java. Мы регулярно используем String в программах на Java, поэтому сравнение двух строк является обычной практикой в ​​Java. В этой статье я попытался ответить на самые распространенные вопросы о строке: «Как мне сравнивать строки в Java?»

Сравнение строк очень полезно для таких процессов, как аутентификация, сортировка, сопоставление ссылок и т. д.

Я перечислил 3 способа сравнения строк в Java.

  1. Использование метода equals() (сравнение содержимого)
  2. Использование оператора == (сравнение ссылки на объект)
  3. Использование метода compareTo() (лексикографическое сравнение строк)

1. Сравните строки, используя метод equals()

Таким образом, я использую метод экземпляра .equals() класса String. Первоначально метод .equals() является методом класса Object, класс String переопределяет его.

equals() метод сравнения двух строк на равенство значений, даже если они логически равны.

equals() в классе String принимает другую строку в качестве параметра и сравнивает ее с указанной строкой, он возвращает true тогда и только тогда, когда строка параметра не равна нулю и содержит те же символы, что и указанная строка.

Я дал программу для сравнения строк с использованием метода equals() ниже

Вывод:

2. Сравните строки с помощью оператора ==

Когда In String, оператор == используется для сравнения ссылки на заданные строки, ссылаются ли они на одни и те же объекты.

Когда вы сравниваете две строки с помощью оператора ==, он возвращает true, если строковые переменные указывают на один и тот же объект Java, иначе он возвращает false.

Я дал Java-программу для сравнения с использованием оператора == ниже

Вывод:

Проблема с использованием оператора == для сравнения строк

Большинство начинающих Java-разработчиков совершают эту ошибку, сравнивая две строки с помощью оператора ==.

По логике, они должны проверять, содержат ли обе строки одинаковую последовательность символов или нет.

В Java String оператор == используется для проверки ссылки обоих строковых объектов, а метод equals() используется для проверки равенства значений обеих строк.

== - проверяет ссылочное равенство

equals() - проверяет равенство значений

Когда мы присваиваем строковое значение строковой переменной, JVM проверяет, присутствует ли уже строка с таким же значением в пуле строк или нет. Если его нет в пуле строк, он будет добавлен в пул констант, и будет возвращена ссылка на этот строковый объект.

Если он присутствует в пуле строк, возвращается ссылка на адрес памяти этого строкового объекта.

На следующем изображении показано графическое объяснение того же самого.

Если мы присваиваем равное значение другой строковой переменной, JVM проверяет, присутствует ли строка с этим значением в пуле строковых констант или нет.

Поскольку строковый объект с этим значением уже создан на предыдущем шаге. Другая строковая переменная начинает ссылаться на ранее созданный экземпляр строкового объекта.

На следующем изображении показано графическое объяснение того же

Когда мы создаем строку с помощью оператора new, новый строковый объект создается и сохраняется в пространстве кучи Java.

3. Сравните строки, используя метод compareTo()

Метод compareTo() используется для лексикографического сравнения двух строк. то есть по алфавиту.

compareTo() сравнивает последовательность символов строки аргумента с последовательностью символов указанной строки.

Он возвращает отрицательное целое число, если строка аргумента лексикографически больше указанной строки. то есть, если строка аргумента следует за указанной строкой. ( строка аргумента › указанная строка )

Он возвращает положительное целое число, если строка аргумента лексикографически меньше указанной строки. т. е. если строка аргумента предшествует указанной строке. ( строка аргумента ‹ указанная строка )

Возвращает ноль, если обе строки лексикографически равны. ( строка аргумента = указанная строка )

Если вы хотите игнорировать обе строки, используйте метод compareToIgnoreCase().

Я дал программу для сравнения строк с использованием метода compareTo(). Он также состоит из случая игнорирования случаев методом compareToIgnoreCase().

Вывод:

Я написал подробную статью на тему как лексикографически сравнивать строки в java.

Вывод

Мы можем сравнивать строки, используя способы, указанные ниже.

  1. Использование метода equals(): метод equals() в строках, используемых для проверки равенства строковых значений, содержат ли они одинаковую последовательность символов.
  2. Использование оператора ==: оператор == используется для проверки равенства ссылок двух строк, указывают ли они на один и тот же строковый объект.
  3. Использование метода compareTo(): метод compareTo() используется для лексикографической проверки строк. То есть по алфавиту. Ознакомьтесь с подробными статьями на тему Как сравнивать строки лексикографически.

Большинство начинающих Java-разработчиков допускают ошибки при сравнении строк. Они хотят проверить содержимое строки, но используют для этого оператор ==.

Всегда рекомендуется использовать метод equals() для сравнения строки на основе ее содержимого.

Если у вас есть какие-либо вопросы о блоках кода, приведенных выше, запишите их в разделе комментариев ниже. Также. дайте мне знать, если у вас есть другой способ сравнить две строки в java в разделе комментариев.

Привет всем 👋, я Гаурав Кукаде, Java-разработчик и автор на codeRolls.com.

Если вы нашли эту статью стоящей, поддержите меня подарив чашечку кофе ☕.

Эта статья первоначально была опубликована на https://coderolls.com