← 질문 목록
#83깊이 0

대입 뒤 한쪽을 바꿀 때 결과가 갈리는 이유는?

언어 · 런타임기초언어 의미론

값 타입 대입은 값 자체를 복사한다. 참조 타입 대입은 같은 객체를 가리키는 참조를 복사한다. 값 안의 참조 필드는 여전히 같은 객체를 가리킬 수 있다.

기준값 의미론참조 의미론
대입 결과값 자체 복사같은 객체의 참조 복사
변경 영향값 필드는 분리별칭으로 공유
동등성값 비교가 자연스러움값·정체성 구분

이 구분은 스택의 저장 위치와 같지 않다. 값도 최적화나 캡처에 따라 힙에 놓일 수 있고 참조 값 자체는 스택 프레임에 놓일 수 있다.

Java처럼 인자를 항상 값으로 전달하는 언어도 객체 참조 값을 복사해 넘긴다. 호출자는 같은 객체의 변경을 보지만 자신의 변수 재대입은 영향받지 않는다.

가변 참조 객체는 별칭과 동시성 위험을 키운다. 불변 객체와 방어적 복사는 공유 위험을 줄이지만 새 객체 생성과 복사 비용을 낸다.

추천 꼬리질문

0/300

적은 내용은 AI 학습에 쓰일 수 있습니다. 이름이나 연락처는 넣지 말아 주세요.

관련 질문

대입 뒤 한쪽을 바꿀 때 결과가 갈리는 이유는?