На других постерах был рассмотрен вопрос о том, как работает метод ().
Не менее важным аспектом вашего вопроса является правильная реализация equals (). И ответ на это действительно зависит от того, что составляет объектное равенство для этого конкретного класса. В приведенном вами примере, если у вас есть два разных объекта, каждый из которых имеет х = 5, они равны? Это действительно зависит от того, что вы пытаетесь сделать.
Если вас интересует только равенство объектов, то реализация по умолчанию *1006* для * .equals () (той, которая предоставляется Object) использует только идентификационные данные (то есть this == other). Если это то, что вы хотите, то просто не реализуйте equals () в вашем классе (пусть он наследуется от Object). Код, который вы написали, хотя и является правильным, если вы идете за идентичностью, никогда не появится в реальном классе, потому что он не дает никакой выгоды по сравнению с использованием реализации Object.equals () по умолчанию.
Если вы только начинаете заниматься этим, я настоятельно рекомендую книгу Джошуа Блоха «Эффективная Java». Это отличное чтение, и оно охватывает такие вещи (плюс, как правильно реализовать equals (), когда вы пытаетесь сделать больше, чем сравнение на основе идентичности)