• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

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

20.06.08 00:51 작성 조회수 146

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

질문자

2020.06.09

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