-
카테고리
-
세부 분야
프로그래밍 언어
-
해결 여부
미해결
primitive type의 값 변경 시 원리 질문드립니다. (immutable)
18.11.05 13:30 작성 조회수 128
0
안녕하세요.
동영상 강의를 들으면서 인터넷 자료 참고하다 이해 안되는 부분이 있어 질문 드립니다.
우선 primitive type은 immutable value라는 자료를 봤습니다.
immutable value란, "값을 재할당은 할 수 있지만, 메모리 영역에서의 변경이 불가능"임으로 이해를 했습니다.
그렇다면 들어주신 예시 중
var b = 'abc';
b = false;
구문이 실행될 때,
b가 가리키고 있던 314 주소의 값 'abc'가 바로 false로 변경되는 것이 아니라,
316 주소(새로운 주소)에 false 값이 들어가고, b가 가리키는 주소가 314에서 316으로 변경되는 것은 아닌지..헷갈려서 질문드렸습니다.
강의 잘 듣고 있습니다.
감사합니다.
답변을 작성해보세요.
3
정재남
지식공유자2018.11.05
Immutable을 이해하려면 좀더 딮하게 고민해보아야 합니다. 사실 false라는 값이 다이렉트로 314에 꽂히는 것은 아닙니다. 기본형 데이터값을 저장한 별도의 메모리공간이 있습니다. (예를 들어 1000번이라고 하죠). 그러면 b=false라는 동작은 b->314. 314->1000. 1000->false 가 되겠죠.
이상태에서 다시 b=30 명령을 내리면 b->314. 314->1001. 1001->30 요런 상태가 됩니다. 그런데 이렇게 설명드리면 처음 접하는 분들 입장에서는 참조형과 기본형을 구분짓기에 더 혼란스러울 수 있어서 설명을 생략하였던 것입니다.
3
정재남
지식공유자2018.11.05
b변수는 314를 바라보고 있습니다. 그상태에서 b에 false를 넣으라고 명령한 것이니 그냥 314에 false가 들어가는 것이죠. 참조형 데이터일 경우에는 참조형 데이터를 담기 위한 별도의 공간이 필요하기 때문에 b-> 314. 314-> 316. 316->실제데이터 형태로 이루어지게 되지만 그렇다고 해서 b가 다이렉트로 316을 바라보게 되는 것은 아니며 어디까지나 316의 데이터를 ‘참조’할 뿐입니다.
답변 2