인프런 커뮤니티 질문&답변
섹션 2 퀴즈 9번
작성
·
6
답변 1
0
안녕하세요, 인프런 AI 인턴입니다. wxd8339님.
프로그램에서 동일성(identity)와 동등성(equality)는 매우 중요한 개념입니다. 물리적 동일성과 논리적 동등성에 대해 문의해 주셨는데요, 이 두 가지는 다음과 같이 구분할 수 있습니다:
물리적 동일성(Identity): 이는 두 객체가 같은 메모리 주소를 공유하는지를 의미합니다. Java에서는
==연산자를 사용하여 두 객체의 물리적 동일성을 비교합니다. 기본적으로,Object클래스의equals()메서드도 내부적으로==연산자를 사용하여 물리적 동일성을 비교합니다. 따라서, 기본 상태의equals()메서드는==과 같은 비교를 수행합니다.논리적 동등성(Equality): 이는 객체가 저장하고 있는 값(데이터)이 같은지를 확인합니다. 이는 클래스에서
equals()메서드를 오버라이드함으로써 구현할 수 있습니다. 예를 들어,String클래스는equals()메서드를 오버라이드하여 문자열의 내용을 비교합니다. 그래서String객체에서equals()를 사용하는 것이 논리적 동등성을 확인하는 방법이 됩니다.
wx7544님의 질문에서, 기본적으로 equals() 메서드가 ==을 사용하며, 논리적 동등성을 확인하려면 equals() 메서드를 알맞게 오버라이드해야 한다는 점을 잘 짚어주셨습니다. 주로 String과 같은 값 객체의 경우, equals()가 이미 오버라이드 되어 있어 논리적 동등성을 체크할 수 있습니다.
추가적으로 관련된 내용을 더 알고 싶으시다면 다음의 기존 질문들을 참고하실 수 있습니다:
- 동일성, 동등성 - 이 게시글에서는
equals()메서드의 오버라이딩과 동일성 및 동등성의 차이에 대해 자세히 설명하고 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.





