원시 타입(primitive type) 객체 타입(object/reference type)
- 원시 타입의 값, 즉 원시 값은 변경 불가능한 값(immutable value)
- 객체(참조) 타입의 값, 즉 객체는 변경 가능한 값(mutable value)
- 원시 값을 변수에 할당하면 변수(확보된 메모리 공간)에는 실제 값이 저장
- 객체를 변수에 할당하면 변수(확보된 메모리 공간)에는 참조 값이 저장
- 원시 값을 갖는 변수를 다른 변수에 할당하면 원본의 원시 값이 복사되어 전달
→ 값에 의한 전달, pass by value
- 객체를 가리키는 변수를 다른 변수에 할당하면 원본의 참조값이 복사되어 전달
→ 참조에 의한 전달, pass by reference
원시 값(primitive type)
- 한번 생성된 원시 값은 읽기 전용(read only) 값으로서 변경할 수 없다
- 변경 불가능하다는 것은 변수가 아니라 값에 대한 진술
- 원시 값 자체를 변경할 수 없지만 변수 값을 변경할 수 있다(교체)
- 상수는 재할당이 금지된 변수
- 상수는 단 한번만 할당이 허용되므로 변수 값을 변경(교체)할 수 없다
- 원시 값을 할당한 변수에 새로운 원시 값을 재할당하면 메모리 공간에 저장되어 있는 재할당 이전의 원시 값을 변경하는 것이 아니라 새로운 메모리 공간을 확보하고 재할당한 원시 값을 저장한 후, 변수는 새롭게 재할당한 원시 값을 가리킨다. → 변수가 참조하던 메모리 공간의 주소가 바뀐다