Я знаю, что оператор ==
применим для сравнения содержимого для примитивных типов и сравнения ссылок для объектов.Отношение между методами equals() и ==
Аналогичным образом, метод класса объектов предназначен для сравнения объектов и сравнения содержимого в строках и классах обертки.
Но следующие моменты, которые я взял из заметок SCJP/OCJP, я не могу понять. Я посмотрел в Интернете и нашел только различия между ==
и .equals
, но не так, как это указано ниже.
- Если
r1==r2
истинно, тогдаr1.equals(r2)
всегда верно. - Если
r1==r2
является ложным, тоr1.equals(r2)
может возвращать true (или) false. - Если
r1.equals(r2)
истинно, тогдаr1==r2
может возвращать true (или) false. - Если
r1.equals(r2)
является ложным, тоr1==r2
всегда неверно.
Что вы хотите сказать? –
Утверждение '' equals() 'метод класса объекта для ссылочного сравнения объектов и сравнения содержимого в строках и классах обертки" неверно. Существует много классов, где 'equals()' определяется как сравнение содержимого. Его цель состоит в том, чтобы объявить «значение», когда это имеет смысл (строки, числа, цвета, коллекции, координаты), и по умолчанию используется идентификатор объекта, где нет равенства «значение» в отношении автора. – RealSkeptic
@RealSkeptic Утверждение «equals() метод класса объекта для сравнения ссылок объектов и сравнения содержимого в строках и классах-оболочках« CORRECT. Могут быть другие классы, где equals() определен, но относительно того, что OP упомянул правильно –