![]()
데이터 타입에는 크게 기본 타입(Primitive Type)과 참조 타입(Reference Type)으로 나눌 수 있다.
우선 알아두고 가야할 것은, 기본 타입은 값 타입이 아니다.
값 타입은 기본 타입을 포함하며, Struct와 같은 사용자 정의 자료형을 포함한 넓은 개념이다.
값 타입으로 선언된 변수는 값 자체를 할당한다.
int a = 10;
이러한 변수들은 데이터와 변수를 전역, 정적 변수일 경우 Data영역에 저장하고,
매개 변수, 지역 변수일 경우 Stack 영역에 저장한다.
참조 타입은 실제 값들은 Heap에 저장하고, 그 데이터들을 가리키는 참조 변수(메모리의 주소)는 Data 혹은 Stack에 저장한다.
int[] a = {1, 2, 3, 4}
값 타입과 참조 타입은 쉽게 예로 든다면 파일의 전송을 예로 들 수 있다.
예를 들어 누군가에게 DM으로 Youtube 영상을 다운받아서 mp4 파일로 보낸다면 그건 값 타입이라 할 수 있고, Youtube 링크를 보낸다면 참조 타입이라 할 수 있을것이다.
이처럼 값 타입으로 선언된 변수는 실제 데이터를 할당하고,
참조 타입으로 선언된 변수는 실제 데이터는 Heap에 할당하며, 메모리 주소를 Stack, Data에 할당하는 것이다.