equals와 ==

인철·2023년 10월 13일

Java

목록 보기
42/52

equals()와 ==

차이점
== 연산자

  • 두 객체의 레퍼런스(참조값) 비교
  • 객체가 메모리 내에서 동일한 위치를 참조하는지 확인

equals 메서드

  • 두 객체의 내용을 비교
  • 내부 상태를 기반으로 비교 수행
  • 객체의 논리적 동등성을 확인하는데 사용
class Main {
	public static void main(String[] args) {
		// 사과 객체 생성
		사과 사과1 = new 사과("애플");
		사과 사과2 = new 사과("애플");
		
		// 사과 객체 비교
		System.out.println("사과1 == 사과2 : " + (사과1 == 사과2));
		System.out.println("사과1.equals(사과2) : " + (사과1.equals(사과2)));
		
		// 정수 객체 생성
		Integer i1 = new Integer(10);
		Integer i2 = new Integer(10);
		
		// 정수 객체 비교
		System.out.println("i1 == i2 : " + (i1 == i2));
		System.out.println("i1.equals(i2) : " + i1.equals(i2));
		
		// 문자열 객체 생성
		String str1 = "안녕";
		String str2 = "안녕"; // 문자열 상수를 참조하는 경우
		
		// 문자열 객체 비교
		System.out.println("str1 == str2 : " + (str1 == str2));
		System.out.println("str1.equals(str2) : " + str1.equals(str2));
		
		// 문자열에 문자열을 추가하여 새로운 문자열 생성
		str1 += "하이";
		
		// 문자열 객체 비교
		System.out.println("str1 == str2 : " + (str1 == str2));
		
		// 문자열 객체 생성
		String str3 = new String("안녕");
		String str4 = new String("안녕");
		
		// 문자열에 문자열을 추가하여 새로운 문자열 생성
		str4 += "하이";
		
		// 문자열 객체 비교
		System.out.println("str3 == str4 : " + (str3 == str4));
		System.out.println("str3.equals(str4) : " + str3.equals(str4));
	}
}

class 사과 {
	String 이름;
	사과(String 이름) {
		this.이름 = 이름;
	}
	
	// equals 메서드 재정의
	@Override public boolean equals(Object o) {
		if ( o instanceof 사과 ) { // 객체가 사과의 인스턴스인지 확인
			사과 비교대상 = (사과)o; // 비교 대상 객체를 사과 객체로 캐스팅

			if ( this.이름.equals(비교대상.이름) ) { // 사과의 이름이 같으면 true 반환
				return true;
			}
		}
		
		return false; // 사과의 이름이 다르면 false 반환
	}
}


profile
같은글이있어도양해부탁드려요(킁킁)

0개의 댓글