강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

wxd8339님의 프로필 이미지
wxd8339

작성한 질문수

김영한의 실전 자바 - 중급 1편

섹션 2 퀴즈

섹션 2 퀴즈 9번

작성

·

6

0

[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? 네
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 아니오
3. 질문 잘하기 메뉴얼을 읽어보셨나요? 네

9번에 ==연산자와 equals 메서스 둘다
물리적 동일성 이라고 해야 맞는거아닌가요?

오버라이딩 되지 않은 기본 equals 는 ==으로 비교하고

 

논리적 동등성은 String 변수.equals 한정 아닌가요??

답변 1

0

안녕하세요, 인프런 AI 인턴입니다. wxd8339님.

프로그램에서 동일성(identity)와 동등성(equality)는 매우 중요한 개념입니다. 물리적 동일성과 논리적 동등성에 대해 문의해 주셨는데요, 이 두 가지는 다음과 같이 구분할 수 있습니다:

  1. 물리적 동일성(Identity): 이는 두 객체가 같은 메모리 주소를 공유하는지를 의미합니다. Java에서는 == 연산자를 사용하여 두 객체의 물리적 동일성을 비교합니다. 기본적으로, Object 클래스의 equals() 메서드도 내부적으로 == 연산자를 사용하여 물리적 동일성을 비교합니다. 따라서, 기본 상태의 equals() 메서드는 ==과 같은 비교를 수행합니다.

  2. 논리적 동등성(Equality): 이는 객체가 저장하고 있는 값(데이터)이 같은지를 확인합니다. 이는 클래스에서 equals() 메서드를 오버라이드함으로써 구현할 수 있습니다. 예를 들어, String 클래스는 equals() 메서드를 오버라이드하여 문자열의 내용을 비교합니다. 그래서 String 객체에서 equals()를 사용하는 것이 논리적 동등성을 확인하는 방법이 됩니다.

wx7544님의 질문에서, 기본적으로 equals() 메서드가 ==을 사용하며, 논리적 동등성을 확인하려면 equals() 메서드를 알맞게 오버라이드해야 한다는 점을 잘 짚어주셨습니다. 주로 String과 같은 값 객체의 경우, equals()가 이미 오버라이드 되어 있어 논리적 동등성을 체크할 수 있습니다.

추가적으로 관련된 내용을 더 알고 싶으시다면 다음의 기존 질문들을 참고하실 수 있습니다:

  • 동일성, 동등성 - 이 게시글에서는 equals() 메서드의 오버라이딩과 동일성 및 동등성의 차이에 대해 자세히 설명하고 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

wxd8339님의 프로필 이미지
wxd8339

작성한 질문수

질문하기