Java == и equals() - это два разных оператора.
Оператор == сравнивает ссылки на объекты, то есть проверяет, указывают ли две переменные на один и тот же объект в памяти. Если две переменные указывают на один и тот же объект, то оператор == вернет true. В противном случае, если две переменные указывают на разные объекты, то оператор == вернет false.
Например:
String s1 = "hello";
String s2 = "hello";
String s3 = new String("hello");
System.out.println(s1 == s2); // true System.out.println(s1 == s3); // false
В этом примере две переменные s1 и s2 указывают на один и тот же объект в пуле строк, поэтому оператор == возвращает true. А переменная s3 указывает на новый объект, созданный с помощью ключевого слова new, поэтому оператор == возвращает false.
Метод equals(), с другой стороны, сравнивает содержимое объектов, а не ссылки на них. Реализация метода equals() может быть переопределена для классов, чтобы определить, как должно быть выполнено сравнение содержимого.
Например:
String s1 = "hello";
String s2 = "hello";
String s3 = new String("hello");
System.out.println(s1.equals(s2)); // true
System.out.println(s1.equals(s3)); // true (как только переопределено для String)
Здесь вызов метода equals() вернет true, так как содержимое всех трех строк одинаково, несмотря на то, что две переменные (s1 и s2) указывают на один и тот же объект в пуле строк, а переменная s3 указывает на новый объект.
Таким образом, если вам нужно сравнить ссылки на объекты, используйте оператор ==. Если вам нужно сравнить содержимое объектов, используйте метод equals().
1606 вопрос-ответ по Java: https://github.com/DEBAGanov/interview_questions
Tелеграмм канал: https://t.me/DEBAGanov
Мое резюме: https://github.com/DEBAGanov