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

bbin0409님의 프로필 이미지

작성한 질문수

나도코딩의 자바 기본편 - 풀코스 (20시간)

참조 (Reference)

참조 관계를 끊고 다시 값을 입력하는 곳에 있어 질문이 있습니다

24.09.30 17:39 작성

·

20

0

 안녕하세요 강사님 다른 학생의 질문의 답변을 보고 질문이 생겨서 이렇게 글을 작성합니다.

 

스크린샷 2024-09-30 오후 5.36.04.png

 

강사님께서 관계를 끊고 다시 값을 입력하고 싶을 때 다음과 같이 temp를 사용해서 하면 된다고 하셨는데 tempCam1 과 tempCam2를 선언할 때 cam1 과 cam2를 참조하면서 선언이 되는 것이 아닌가요?

그래서 null 값을 입력하면 tempCam도 null 값을 받을 것 같은데 tempCam은 왜 null 값이 되지 않는지 궁금합니다.

 

좋은 강의 만들어주셔서 정말 감사합니다.

답변 2

0

나도코딩님의 프로필 이미지
나도코딩
지식공유자

2024. 10. 01. 21:01

안녕하세요?

그림으로 설명을 드리면 조금 더 이해가 수월할 것 같습니다 😊

먼저 새로운 Camera 객체를 2개 만들고 각각 cam1, cam2 라는 이름으로 이들을 참조, 즉 가리키도록 합니다.

Camera cam1 = new Camera(); // 파란색 타원
Camera cam2 = new Camera(); // 주황색 타원

이를 그림으로 표현하면 이렇습니다.

image.png

 

그런 다음, tempCam1 과 tempCam2 를 만들면서 각각 cam1 과 cam2 가 참조하고 있는 객체를 참조하도록 합니다.

Camera tempCam1 = cam1; // 파란색 타원 참조
Camera tempCam2 = cam2; // 주황색 타원 참조

위와 같이 코드를 작성하게 되면 실제 모습은 다음과 같습니다. tempCam1 은 cam1 과 같은 파란색 타원을, tempCam2 는 cam2 와 같은 주황색 타원을 가리키게 됩니다.

image.png

그런 다음에 cam1 과 cam2 에 null 을 대입함으로써 더 이상 기존의 객체를 참조하지 않도록 합니다.

cam1 = null;
cam2 = null;

그림으로 표현하면 이렇게 되지요. 단, 이때 tempCam1 과 tempCam2 는 여전히 파란색 타원과 주황색 타원을 참조하고 있습니다.

image.png

 

이제 다시 cam1 과 cam2 를 각각 tempCam1 과 tempCam2 가 참조하고 있는 객체를 참조하도록 합니다.

cam1 = tempCam1;
cam2 = tempCam2;

다시 이전의 상황과 동일한 모습이 되겠네요.

image.png

이후에는 cam1 또는 tempCam1 을 통해 파란색 타원의 객체에 접근할 수 있으며, cam2 또는 tempCam2 를 통해 주황색 타원의 객체에 접근할 수 있게 됩니다.

궁금증 해결에 도움되었으면 합니다 🙌

감사합니다. 

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

2024. 10. 01. 21:17

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

0

인프런 AI 인턴님의 프로필 이미지

2024. 09. 30. 17:41

안녕하세요, 인프런 AI 인턴입니다. 흰머리오목눈이님.

참조 관계를 끊고 다시 값을 입력하는 방법에 대한 질문을 주셨군요. 아래에 관련 질문과 그에 대한 답변 URL을 첨부해 드리겠습니다.

참고 : “강사님, 질문 하나 더 드립니다!”

질문에서 제시한 예제 코드에서 tempCam1tempCam2cam1cam2가 가리키고 있는 객체의 참조를 저장합니다. 따라서 cam1cam2null로 설정해도 tempCam1tempCam2는 원래 객체를 계속 가리키고 있습니다. 간단히 말해서, tempCam1tempCam2null이 되지 않는 이유는 이들이 cam1cam2에 할당된 객체의 참조를 독립적으로 보유하고 있기 때문입니다.

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

bbin0409님의 프로필 이미지

작성한 질문수

질문하기