상수 객체는 변경 불가능 객체입니다. 변수 값을 바꾼다는 의미는 변수 이름이 가리키는 메모리 공간의 값을 직접 바꾸는 게 아니라 바꾸고자 하는 상수 객체를 참조하는 것입니다. #4는 x가 value가 가리키는 상수 객체를 참조하게 하는 코드입니다. 다음 행에서 출력하면 x는 20이라고 나옵니다.
그림 5-11은 change_value() 함수의 호출을 완료한 다음에 살펴본 스택 프레임 모습입니다.
그림 5-11 call by object reference 스택 프레임 ③
change_value 스택 프레임이 사라지면서 change_value() 함수의 지역 변수 x와 value가 사라졌습니다. 또한 레퍼런스 카운트(reference count)가 0이 된 상수 객체 20도 사라졌습니다. x를 출력하면 10이 나옵니다. 값이 변경되지 않았지요? 분명 이전 절에서 알아본 값에 의한 전달 방식이나 참조에 의한 전달 방식은 아닙니다.