equals()
означает «значимо эквивалентный». Это не то же самое, что ==
, что означает «это один и тот же объект». Все классы имеют метод equals()
, унаследованный от класса Object
. Например, скажем, вы пишете Car
класс, в котором хранятся марка, модель и владелец:
Car carOne = new Car("Buick", "LeSabre", "John Doe");
Car carTwo = carOne;
Здесь equals()
и ==
оба вернут true, потому что обе ссылки указывают на один и тот же автомобиль. Но для
Car carOne = new Car("Buick", "LeSabre", "John Doe");
Car carTwo = new Car("Buick", "LeSabre", "John Doe");
Есть два разных объекта, поэтому ==
возвращает false. Однако, поскольку обе машины принадлежат Buick LeSabres, принадлежащему Джону Доу, ваш equals()
должен быть записан с возвращением true (при условии, что в этом примере никто не владеет более чем одной машиной одного типа).
Также, как указал Самуил, если вы переопределяете equals()
, вы должны также переопределить hashCode()
; причины этого выходят за рамки этого вопроса и хорошо документированы в других местах.