Научитесь сравнивать содержимое двух объектов 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