지난 강의에 이어, 이번에는 값 형식과 참조 형식의 차이에 대해 설명드리겠습니다. 

가정해 보겠습니다. 메모리 상에 ‘Monster’ 데이터가 저장되어 있고, 이 데이터를 ‘monster’, ‘thisMon’, ‘yourMon’, ‘tempMon’이라는 네 개의 변수가 참조하고 있다고 생각해봅시다.

 이 네 개의 변수는 모두 동일한 데이터, 즉 몬스터 데이터를 참조하고 있기 때문에, 이 변수들이 가리키는 대상은 동일합니다.

만약 이 중 한 변수를 사용하여 ‘Monster’ 데이터의 이름을 ‘Orc’로 변경한다면, 다른 변수들이 참조하고 있는 몬스터 데이터의 이름도 모두 ‘Orc’로 변경될 것입니다. 

이는 참조 형식의 특징으로, 네 개의 변수 모두 같은 메모리 주소, 즉 같은 데이터를 가리키고 있기 때문입니다.

즉, ‘몬스터’ 데이터의 이름이 ‘monster’ 변수를 통해 ‘Orc’로 변경된다면, ‘monster’, ‘thisMon’, ‘yourMon’, ‘tempMon’이라는 변수들이 참조하고 있는 데이터의 이름도 모두 ‘Orc’로 바뀌게 됩니다. 이들 모두가 지칭하는 대상은 동일하기 때문입니다.

앞의 강의에서도 설명 드렸지만, 값 형식과 참조 형식의 가장 큰 차이는, 값 형식은 데이터의 실제 값 자체를 변수에 저장하는 반면, 참조 형식은 데이터가 저장되어 있는 메모리 위치를 나타내는 값(주소)만을 변수에 저장한다는 점입니다. 

따라서 참조 형식 변수를 사용할 때는 여러 변수가 같은 데이터를 공유하게 되며, 이에 따른 데이터 변경이 모든 참조 변수에 영향을 미칩니다.

강의 포스트 모두 보기