Вебинары Разобраться в IT Реферальная программа
Программирование Аналитика Дизайн Маркетинг Управление проектами
7 профессий по цене одной
07:05:47:06
дн. ч. мин. сек.
13 Май 2024
2 мин
1976

Разница между == и equals() в Java

Когда нужно сравнить два объекта в Java, часто возникает путаница между использованием оператора сравнения == и метода equals(). Это весьма общая проблема,

Когда нужно сравнить два объекта в Java, часто возникает путаница между использованием оператора сравнения == и метода equals(). Это весьма общая проблема, и ее понимание важно для успешного написания кода на Java.

Представим, что есть два объекта String, и требуется определить, равны ли они друг другу. Возможно, на первый взгляд кажется, что использование оператора == в этой ситуации будет правильным, но это не всегда так.

String str1 = new String("Hello");
String str2 = new String("Hello");

if (str1 == str2) {
    System.out.println("Strings are equal");
} else {
    System.out.println("Strings are not equal");
}

В этом случае вывод будет «Strings are not equal», хотя ожидалось обратное. Это происходит из-за того, что == сравнивает ссылки на объекты, а не их содержимое. В данном примере str1 и str2 указывают на разные объекты, хоть их значения и совпадают.

Теперь рассмотрим использование метода equals().

String str1 = new String("Hello");
String str2 = new String("Hello");

if (str1.equals(str2)) {
    System.out.println("Strings are equal");
} else {
    System.out.println("Strings are not equal");
}

На этот раз вывод будет «Strings are equal», что соответствует ожиданиям. Метод equals() проверяет, одинаковы ли значения объектов, а не являются ли они одним и тем же объектом в памяти.

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

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

Проверь как ты усвоил материалы статьи
Пройди тест и узнай насколько ты лучше других читателей

Добавить комментарий