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

disorder422님의 프로필 이미지
disorder422

작성한 질문수

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

직접 구현하는 연결 리스트3 - 추가와 삭제2

참조형 return 관련 질문

작성

·

174

0

 


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

[질문 내용]
MyLinkedListV2 클래스의 remove 함수에서

Object removedItem = removeNode.item;
...
removeNode.item = null;
return removedItem;

위와 같은 방식으로 item을 반환하기 전에 null로 초기화를 해주고 있습니다.

removedItem에 참조형인 removeNode.item을 할당하면 참조값이 복사되어 값이 null인 참조값을 반환할 것이라고 생각했는데, 실제 코드를 실행시켜보니 삭제된 노드의 item 값이 정상적으로 반환되는 것을 확인했습니다.

 

Object removedItem = removeNode.item을 실행하면 참조값이 아니라 데이터가 들어가게 되는 건가요?

답변 1

1

안녕하세요. disorder422님, 공식 서포터즈 코즈위버입니다.

코드에 따른 상황을 천천히 살펴보시면 이해가 되실거에요

 

Object removedItem = removeNode.item;

여기서 removeNode의 필드 item이 가지고 있던 주소값을 removedItem에 복사하였습니다.

 

removeNode.item = null;

removeNode 의 필드 item 의 주소값을 null로 변경합니다. 하지만 removeItem에는 이미 item의 주소값이 복사 된 뒤지요. 그래서 여전히 removeItem 의 주소값을 이용해 인스턴스에 접근할 수 있는 상태입니다.

 

감사합니다.

disorder422님의 프로필 이미지
disorder422

작성한 질문수

질문하기