== 연산자를 사용해서 두 객체의 참조가 동일한 객체를 가리키고 있는지 확인
Object가 제공하는 equals는 == 비교를 한다..! 즉 동일한 객체의 주소를 참조하고 있는지 검사한다.
public boolean equals(Object obj) {
	return (this == obj);
}
동일한 객체를 참조하고 있어도여도 안의 내용이 다를 수 있기에, 논리적으로 같은지 파악하려면 equals()를 오버라이드 해야함. → 아래는 아직 오버라이드 하기전이면 둘다 false가 나올거다!!! 안의 내용은 논리적으로 같은데..!
public class EqualsMainV1 {
	public static void main(String[] args) {
	
		UserV1 user1 = new UserV1("id-100");
		UserV1 user2 = new UserV1("id-100");
		
		System.out.println("identity = " + (user1 == user2));
		System.out.println("equality = " + user1.equals(user2));
	}
}
아래처럼 id가 같으면 논리적으로 같다는 커스텀 equals()를 만들어줄 수도 있다.
public class UserV2 {
	private String id;
	
	public UserV2(String id) {
	this.id = id;
}
	@Override
	public boolean equals(Object obj) {
	
	UserV2 user = (UserV2) obj;
	return id.equals(user.id);
	
	}
}
하지만!
무엇을 논리적 비교로 사용할지만 지정해주면, IDE가 만들어준다.
generator 단축키:  ⌘N (macOS)
@Override
public boolean equals(Object o) {
	if (this == o) return true; // 아예 this랑 그 자체가 같으면 true
	if (o == null || getClass() != o.getClass()) return false; // null 이거나 클래스자체가 다르면 false
	User user = (User) o; 
	return Objects.equals(id, user.id); // 그다음에서야 id 비교
}