JAVA,객체지향

자료형이란?

25G 2021. 11. 18. 14:06

자료형이란?

 

물건을 저장하기 위해 창고를 설계한다고 가정해 보자

그럼 마구잡이로 넣을 수 없으니 정리를 위해서 포장을 해야 한다.

 

포장을 할 때 사과라는 물건을 저장하는데 창고 2칸에 6개가 딱 맞고

딸기라는 물건을 저장하는데 창고 4칸에 10개가 들어가야 딱 맞게 저장이 된다

그럼 포장에 단위를 알 수 있다.

그럼 이제 창고에 들어올 물건의 양을 알아야 한다. 그래야 그 양에 맞춰서 창고에 칸을 마련해 놓을 수 있기 때문이다.

 

java도 마찬가지다

자바도 프로그램을 시키려면 창고 설계가 필요하다고 생각하면 된다.

java에서 포장단위는 8가지 타입으로 이미 정해져 있다.

 

boolean = 1bit(bit는 포장단위) =2에 1승 = 2 = 참 or 거짓

int = 32bit =2에 32승 =42억 9천(-21억~21억 까지 표현)

double = 64bit = 2에 64승 =1800경(-900경 ~ 900경)

char = 16bit = 2에 16승 = 65536

등등...

그럼 자료형의 메모리 구조를 알아보자

 


자료형 메모리 구조

 

 

 

메모리 한 칸에 8bit로 만든 이유는 8bit가 256인데 256가 영어 한문자를 표현할 수 있기 때문이다. 그래서 이 8bit 논리적인 단위로 1Byte라고 한다.

그럼 java에서 int 나 double 등으로 타입을 명시해주는 것은 미리 포장을 하는 것이라고 생각할 수 있다.

int라고 적으면 나 4Byte 필요하니까 할당해놔라고 미리 사이즈를 정해 놓는 행위이다.

int a = 1000;

이라고 입력을 했을 때  a라는 변수가 필요한 이유는 개발자가 직접 이 1000이라는 데이터를 메모리 번지에 할당하기가 어렵기 때문이다. 그래서 a라는 변수를 통해서 해당 자료형을 메모리 어떤 번지수에 저장을 하면 해당 a변수에 메모리 번지수를 저장하는 것이다.

a변수가 선언되면 a는 3번지에 저장돼 있어 라고 기억을 해놓는 것이다.

a변수가 호출이 됐을 때 컴퓨터 내부적으로는 바로 메모리로 가는 것이 아닌 a변수의 데이터가 저장돼 있는 번지수를 먼저 확인 한 다음 해당 메모리 번지수로 가서 a는 int라 4Byte이니까 해당 번지수부터 네 칸(4Byte)을 읽어 내는 것이다.