Object — это базовый класс, для всех остальных обеъктов => у всех остальных классов есть методы класса Object.
Сейчаc мы рассмотрим метод equals, а также разницу между equals и ==

public class Square {
	private int a;	
	Square(int a) {
		this.a = a;		
	}
	public static void main(String[] args) throws Exception {
		Square s1 = new Square(5);
		Square s2 = new Square(5);
		
		System.out.println(s1 == s2);
		System.out.println(s1.equals(s2));
	}
}

На консоль будет выведено:
false
false

s1 == s2 — сравниваются ссылку, т.к. ссылки s1 и s2 разные, значит выведется false
s1.equals(s2) — также будет false, т.к. сравниваются ссылки на объекты
Но метод equals ДОЛЖЕН сравнивать значения, поэтому данный метод необходимо переопределить
Для того, чтобы переопределить метод equals, в IDE Eclipse необходимо сделать:
Source — Generete hashCode and equals, то тогда — equals будет сравнивать значения.

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Square other = (Square) obj;
		if (a != other.a)
			return false;
		return true;
	}

Соответственно, если сейчас запустить программу, то будет выведено
false — сравниваются ссылки на объекты, а они разные
true — т.е. equals уже сравнивает значения

Реклама