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

parkhs님의 프로필 이미지
parkhs

작성한 질문수

예제로 배우는 스프링부트 입문

(03) Annotation으로 DI 사용하기

if(member1 == member2)의 의미를 정확히 모르겠습니다.

작성

·

201

0

안녕하세요!

@Autowired에 의해 각각 생성된 것이니

member1이 가리키는 것과 member2가 가리키는 것은 서로 다른 것으로 알고있습니다.(내용은 같지만, 객체 주소는 다른.. 느낌?)

첨부한 사진처럼 개념 관계도가 성립하는 것 같은데,

if(member1 == member2)의 의미를

member1.name == member2.name 

and

member1.nickname == member2.nickname

라고 해석해도 될까요??

코드에서는 동일한 객체라고 나오는데 사실 왜 동일한지 잘 모르겠습니다. 위는 제가 임의로 해석한 것입니다.

답변 2

2

이재환님의 프로필 이미지
이재환
지식공유자

스택에 생성된 객체변수는 힙에 생성된 객체를 참조하고 있는데 그 참조값을 저장하고 있습니다.

그러므로 if(member1 == member2) 는 힙에 생성된 객체의 참조아이디(쉽게 얘기하면 저장된 주소)를 비교하는 것입니다.

같은 주소값을 가지고 있다면 같은 객체를 참조하고 있는 것이므로 동일한 객체를 참조하고 있는 것입니다.

객체안의 내용을 비교하고 싶다면 member1.equals(member2) 이런식으로 비교해야 합니다.

0

parkhs님의 프로필 이미지
parkhs
질문자

감사합니다. 이해했습니다!

parkhs님의 프로필 이미지
parkhs

작성한 질문수

질문하기