Java String.equals()

Научитесь сравнивать содержимое двух объектов String с учетом регистра, используя API String.equals(). Для сравнения без учета регистра мы можем использовать метод equalsIgnoreCase().

Никогда не используйте оператор '==' для проверки равенства строк. Он проверяет ссылки на объекты, а не содержимое, что в большинстве случаев нежелательно.

1. API String.equals()

String.equals() в Java сравнивает строку с объектом, переданным в качестве аргумента метода. Он возвращает true тогда и только тогда, когда:

  • объект аргумента имеет тип String
  • объект аргумента не является нулевым
  • представляет ту же последовательность символов, что и текущая строка
String str1 = "alex";String str2 = "alex";String str3 = "alexa";Assertions.assertTrue(str1.equals(str2));Assertions.assertFalse(str1.equals(str3));

2. Выдает исключение NullPointerException

Функция equals() не поддерживает нулевой аргумент и выдает исключение NullPointerException.

String str1 = "alex";Assertions.assertThrows(NullPointerException.class,() -> {str1.contains(null);});

3. Только сравнения с учетом регистра

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

String str1 = "alex";Assertions.assertTrue(str1.equals("alex"));Assertions.assertFalse(str1.equals("Alex")); //different case is used

4. Разница между оператором Equals и методом equals()

Как упоминалось ранее, оператор '==' проверяет те же ссылки на объекты. Он не проверяет содержимое строки. В то время как метод equals() строго проверяет только содержимое строки.

В следующей программе Java мы создали два объекта String. Сначала мы сравниваем объекты с помощью оператора equals, что приводит к false, поскольку оба являются разными объектами в памяти.

Затем мы проверяем содержимое строк с помощью функции equals(), которая возвращает значение true, поскольку, несмотря на то, что объекты различны, их содержимое одинаково.

String strObj1 = new String("test");String strObj2 = new String("test");Assertions.assertFalse(strObj1 == strObj2);Assertions.assertTrue(strObj2.equals(strObj2));

Ссылка: Java String Doc

Исходный код на Github

Прокрутить вверх