양 쪽의 값이 같다는 것을 알아두면 된다.
단위 | 단위 |
---|---|
8 bit(비트) | 1 byte |
1024 byte(바이트) | 1 kilobyte |
1024 kilobyte(킬로바이트) | 1 megabyte |
1024 megabyte(메가바이트) | 1 gigabyte |
1024 gigabyte(기가바이트) | 1 terabyte |
1024 terabyte(테라바이트) | 1 petabyte |
1024 petabyte(페타바이트) | 1 exabyte |
1024 exabyte(엑사바이트) | 1 zettabyte |
데이터 타입 | 메모리의 크기 | 표현 가능 범위 |
---|---|---|
byte | 1byte | -128 ~ 127 |
short | 2byte | -32,768 ~ 32,767 |
int | 4byte | -2,147,483,648 ~ 2,147,483,647 |
long | 8byte | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 |
위의 표는 정수에 해당하는 데이터 타입의 리스트다.
byte a;
위의 변수에 담을 수 있는 숫자의 범위는 -128 ~ 127 이다. 이 범위 밖의 수인 -129나 128을 변수에 대입하려고 하면 오류가 발생할 것이다. 그럼 매우 큰 표현범위를 가지고 있는 long형을 사용하지 왜 byte형을 사용할까?
만약, 최대로 표현하고자 하는 수가 100을 넘지 않는 경우가 있다고 생각해보자. 이럴 경우, long을 사용한다면 8배나 많은 메모리를 사용하게 된다.
byte a=1; // 1byte
long a=1; // 8byte
즉, 어떤 숫자를 저장하느냐에 따라서 사용하는 메모리의 크기가 달라지는 것이 아니고, 어떤 데이터 타입으로 변수를 선언했느냐에 따라서 사용하는 메모리의 크기가 달라지는 것이다. 결국, 변수에 들어올 수 있는 숫자의 최대 크기를 잘 판단해서 데이터 타입을 지정해야 귀한 메모리의 용량을 아낄 수 있다.
하지만 오늘날은 메모리의 용량이 늘어났고, 또 어떤 데이터형을 사용할 것이냐는 문제를 판단하기 위해서 여러 가지가 고려되어야 한다. 결과적으로 말해서 정수를 저장할 때는 int를 사용하면 된다. int 형을 처리할 때 CPU의 처리속도가 빠르고, int는 충분히 큰 수를 표현할 수 있는 데이터 타입이기 때문이다.
데이터 타입 | 메모리의 크기 | 표현 가능 범위 |
---|---|---|
float | 4byte | ±(1.40129846432481707e-45 ~ 3.40282346638528860e+38) |
double | 8byte | ±(4.94065645841246544e-324d ~ 1.79769313486231570e+308d) |
위의 표는 실수에 해당하는 데이터 타입의 리스트다.
실수를 사용할 때는 double을 주로 사용한다.
데이터 타입 | 메모리의 크기 | 표현 가능 범위 |
---|---|---|
char | 2byte | 모든 유니코드 문자 |
자바에서는 문자와 문자열이 다르다. 문자(character)는 글자 하나를 의미하고, 문자열은 글자들의 집합을 의미한다. 그럼 문자열은 메모리를 얼마나 사용할까?
문자열은 문자의 집합이라고 했다. 문자는 char형이고, char는 2byte의 메모리를 사용한다. 따라서 6글자를 담고 있는 String 타입의 변수는 12바이트의 공간을 차지하게 된다.