Notice
Recent Posts
Recent Comments
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Archives
Today
Total
관리 메뉴

충분히 쌓여가는

12.3 Object 클래스 - 객체 동등 비교 equals() 본문

이것이 자바다/12 java.base 모듈

12.3 Object 클래스 - 객체 동등 비교 equals()

빌드이너프 2024. 4. 8. 15:48

Object의 equals() 메소드는 객체의 번지를 비교하고 boolean 값을 return 한다

public boolean equals(Obejct obj)

 

equals() 메소드의 매개변수 타입이 Object이므로 자동 타입 변환에 의해 모든 객체가 매개값으로 대입될 수 있다

 

equals() 메소드는 비교 연산자인 ==과 동일한 결과를 return 한다

Object obj1 = new Object();
Object obj2 = obj1;
boolean result = obj1.equals(obj2);
boolean result = (obj1 == obj2)

 

일반적으로 Object의 equals() 메소드는 재정의해서 동등 비교용으로 사용된다(동등 비교: 객체가 비록 달라도 내부의 데이터가 같은지 비교하는 것)

ex. String은 equals() 메소드를 재정의해서 내부 문자열이 같은지 비교함

 

예시

package ch12.sec03.exam01;

public class Member {
	public String id;
	
	public Member(String id) {
		this.id = id;
	}
	
	@Override
	public boolean equals(Object obj) {
		if(obj instanceof Member target) {
			if(id.equals(target.id)) {
				return true;
			}
		}
		return false;
	}
}
package ch12.sec03.exam01;

public class EqualsExample {
	public static void main(String[] args) {
		Member obj1 = new Member("blue");
		Member obj2 = new Member("blue");
		Member obj3 = new Member("red");
		
		if(obj1.equals(obj2)) {
			System.out.println("obj1과 obj2는 동일");
		} else {
			System.out.println("obj1과 obj2는 동일하지 않다");
		}
		
		if(obj1.equals(obj3)) {
			System.out.println("obj1과 obj3는 동일");
		} else {
			System.out.println("obj1과 obj3는 동일하지 않다");
		}
	}
}
obj1과 obj2는 동일
obj1과 obj3는 동일하지 않다