원시타입 primitive type ? 불변성immutable : 값을 다른 값으로 변경이 불가능
따라서 원시타입의 변수에 담긴 값은 재할당 이외에 변경할 수 있는 방법이 없다
값에 의한 전달(깊은 복사)
객체타입/참조타입 object/reference type ? 가변성mutable : 값을 다른 값으로 변경 가능
참조에 의한 전달(얕은 복사) - 엄밀히 말하면 이것도 값에 의한 전달이다.
다만, 그 값이 원시 값이냐 참조 값이냐의 차이만 존재할 뿐이다.
객체의 얕은 복사 - 한 단계 까지만 복사(참조 값, 메모리 주소를 복사)
객체의 깊은 복사 - 객체의 중첩되어 있는 객체까지 모두 복사(중첩된 객체까지 모두 복사해 새로운 복사본을 생성)