-
카테고리
-
세부 분야
백엔드
-
해결 여부
미해결
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
이재환
지식공유자2020.06.09
스택에 생성된 객체변수는 힙에 생성된 객체를 참조하고 있는데 그 참조값을 저장하고 있습니다.
그러므로 if(member1 == member2) 는 힙에 생성된 객체의 참조아이디(쉽게 얘기하면 저장된 주소)를 비교하는 것입니다.
같은 주소값을 가지고 있다면 같은 객체를 참조하고 있는 것이므로 동일한 객체를 참조하고 있는 것입니다.
객체안의 내용을 비교하고 싶다면 member1.equals(member2) 이런식으로 비교해야 합니다.
0
답변 2