동일성과 동등성에 대해서 설명해 주세요.

2024. 12. 6. 09:10·백엔드 면접

동일성과 동등성은 객체 지향 프로그래밍에서 객체를 비교할 때 중요한 개념입니다. 자바에서는 이 두 개념을 equals() 메서드와 == 연산자를 통해 구분할 수 있습니다.

 

equals()는 객체의 내용을 비교하고,  ==는 객체의 참조를 비교합니다. 따라서 두 객체의 내용이 같더라도 서로 다른 객체라면 equals()는 true를 반환하고, ==는 false를 반환합니다.

 


 

동등성(Equality)은 무엇인가요?

동등성은 논리적으로 객체의 내용이 같은지를 비교하는 개념입니다. 자바에서는 equals() 메서드를 사용하여 객체의 동등성을 비교합니다. 커스텀 객체의 동등성 비교를 위해서는 equals() 메서드의 오버라이딩이 필수적입니다. 왜냐하면, Object 클래스의 equals() 메서드는 == 연산자를 사용하여 동일성을 비교합니다. 그리고 모든 클래스는 Object 클래스를 상속하여 동일성 비교를 기본으로 동작하기 때문에, 동등성 비교가 필요한 클래스에서 필요에 맞게 equals와 hashCode 메서드를 오버라이딩 해야 합니다.

 


 

동일성(Identity)은 무엇인가요?

 

동일성은 두 객체가 메모리 상에서 같은 객체인지 비교하는 개념입니다. 자바에서는 == 연산자를 사용하여 객체의 동일성을 비교합니다. == 연산자는 객체의 참조(레퍼런스)를 비교하므로, 두 변수가 동일한 객체를 가리키고 있는지를 확인합니다.

 


 

String은 객체인데 == 비교가 가능한 이유가 무엇인가요?

 

문자열 리터럴은 문자열 상수 풀에 저장되기 때문에 동일한 문자열 리터럴을 참조하면 == 연산자가 true를 반환할 수 있습니다. 하지만 new 키워드를 사용하여 문자열을 생성하면 새로운 객체가 생성되므로 == 연산자가 false를 반환할 수 있습니다. 따라서 문자열 비교 시 항상 equals() 메서드를 사용한 동등성 비교를 하는 것이 좋습니다.

 


 

Integer 같은 래퍼 클래스는 어떻게 비교하나요?

 

래퍼 클래스도 객체이기 때문에 == 연산자는 참조를 비교합니다. 값 비교를 원할 경우 equals() 메서드를 사용해야 합니다. 다만, 자바는 특정 범위의 래퍼 객체를 캐싱하므로 같은 값의 Integer 객체가 같은 참조를 가질 수 있습니다. 하지만 일반적으로 equals() 메서드를 사용하는 것이 안전합니다.

'백엔드 면접' 카테고리의 다른 글

동기 방식으로 외부 서비스(API)를 호출할 때 외부 서비스 장애가 나면 어떻게 조치할 수 있나요?  (0) 2024.12.09
@Component, @Controller, @Service, @Repository의 차이에 대해서 설명해주세요.  (0) 2024.12.07
equals와 hashCode는 왜 함께 재정의해야 할까요?  (0) 2024.12.05
JPA ID 생성 전략에 대해 설명해 주세요.  (0) 2024.12.05
로그와 메트릭에 대해서 설명해 주세요.  (0) 2024.12.04
'백엔드 면접' 카테고리의 다른 글
  • 동기 방식으로 외부 서비스(API)를 호출할 때 외부 서비스 장애가 나면 어떻게 조치할 수 있나요?
  • @Component, @Controller, @Service, @Repository의 차이에 대해서 설명해주세요.
  • equals와 hashCode는 왜 함께 재정의해야 할까요?
  • JPA ID 생성 전략에 대해 설명해 주세요.
이런개발
이런개발
geun-00의 흔적 보관소
  • 이런개발
    내일이 기대되는 오늘
    이런개발
  • 전체
    오늘
    어제
    • 분류 전체보기 N
      • 백엔드 면접
      • SQL N
        • SUM, MAX, MIN
        • SELECT
        • GROUP BY
        • JOIN
      • Spring
      • JPA
      • 트러블슈팅
      • Infra
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    티스토리챌린지
    스프링
    데브코스
    JPA
    오블완
    자바
    토스 페이먼츠
    raid
    백엔드 면접
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
이런개발
동일성과 동등성에 대해서 설명해 주세요.
상단으로

티스토리툴바