본문 바로가기
Java

[Java] 원시 자료형(Primitive Data Types)

by 이도현 2021. 5. 18.

왜 자료형을 알아야 하지?

   나 같은 비전공자가 프로그래밍을 시작하면 보통 처음에는 개발환경 설정을 하게 된다. 이때까지는 뭔가 열심히 해보겠다는 열정을 가득 가지고 있다. 하지만 하루가 지나고 자료형을 배우게 되면 순식간에 흥미를 잃게 된다. 나는 뭔가 대단한 것을 개발하고 싶어서 왔는데, 도대체 자료형이란 걸 왜 배우는 걸까?

    만약 그때의 나에게 자료형을 왜 배워야하고, 왜 중요한지를 설득한다고 하면, 나는 가장 먼저 좋아하는 게임이 무엇이냐고 물을 것이다. 그리고 그 게임의 다양한 이미지들에는 나와있지 않은, 화면 뒤에서 돌아다니는 다양한 데이터들에 대해서 설명할 것이다. 그리고 그 데이터를 생성하고, 읽고, 바꾸고, 삭제하는 그 과정과 흐름이 바로 이 게임이라는 것과 그 데이터를 효과적으로 효율적으로 사용하기 위해서 그 데이터의 형태와 규정에 대해서 알아야 하고, 바로 그것이 데이터의 형태를 자료형이라고 한다고 설명할 것 같다.

    프로그램을 정말 단순하게 말한다면 데이터의 흐름을 통제하는 것이라 할 수 있을 것이다. 그리고 그 데이터의 흐름을 통제하기 위해서는 프로그래밍의 과정에서 데이터를 어떻게 다루는 지를 알아야만 한다. 즉, 자료형을 아는 것이 바로 프로그래밍의 시작인 것이다.

    

자바의 원시 자료형

   원시 자료형이라고 하니 뭔가 오래된 느낌이나 중요하지 않다는 느낌이 있을 수 있지만, 사실상 가장 중요하고 기초가 되는 자료형이라고 보면된다. 때로는 null이나 void를 포함하기도 한다. 자바의 원시 자료형 종류는 총 8가지이다. 각 자료형의 사전적 의미로는 다음과 같다.

boolean //boolean;불리언;영국의 수학자 조지 불(George Boole)이 창안한 불 대수의 이론과 규칙에 따른 연산에 관한 용어;
byte	//byte;바이트
char	//character;글자
short	//short;짧은
int	//integer;정수
long	//long;긴
float	//float;떠다니는;부동(浮動)의
double	//double;두배의

이 자료형들은 사용할 때 메모리에서 차지하는 사이즈가 정해져 있다.

즉, 일단 각 자료형으로 변수를 생성하면 메모리에 그 변수의 사이즈 만큼을 무조건 차지하게 된다는 의미이다.

이 이야기를 하는 이유는 다음의 예시로 표현해본다.

int a = 0;
long b = 0L;

둘다 지금 0이라는 값을 표현하고 있다.

 

프로그래밍을 배우지 않으면 "아~ 같은 정수 값 0 을 표기하니까 뭐 데이터의 크기도 같겠지" 하고 직관적으로 생각할 수 있는데,

int는 0을 표현하든 -2,147,483,648을 표현하든 항상 32bit의 메모리를 차지하고,

long은 0을 표현하든 9,223,372,036,854,775,807을 표현하든 항상 64bit의 메모리를 차지하게된다.

 

아래는 각 자료형의 사이즈와 표현가능한 값을 정리한 표이다.

Category Types Size (bits) Minimum Value Maximum Value Precision


Integer
byte 8 -128 127 From +127 to -128
char 16 0 216-1 All Unicode characters
short 16 -215 215-1 From +32,767 to -32,768
int 32 -231 231-1 From +2,147,483,647 to -2,147,483,648
long 64 -263 263-1 From +9,223,372,036,854,775,807 to -9,223,372,036,854,775,808
Floating-point

float 32 2-149 (2-2-23)·2127 From 3.402,823,5 E+38 to 1.4 E-45
double 64 2-1074 (2-2-52)·21023 From 1.797,693,134,862,315,7 E+308 to 4.9 E-324
Other

boolean -- -- -- false, true
void -- -- -- --