타입(Data Type)은 해당 데이터가 메모리에 어떻게 저장되고, 어떻게 처리되어야 하는지 명시적으로 알려주는 역할을 한다.
자바에서는 이런 형태를 미리 정의하여 제공하고 있다.
정수형 타입 |
할당되는 메모리 크기 |
데이터의 표현 범위 |
byte |
1바이트 |
-128 ~ 127 |
short |
2바이트 |
-2^15 ~ (2^15 - 1) |
-32, 768 ~ 32,767 |
int |
4바이트 |
-2^31 ~ (2^31 - 1) |
-2,147,483,648 ~ 2,147,483,647 |
long |
8바이트 |
-2^63 ~ (2^63 - 1) |
-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 |
- 정수형 데이터 타입을 결정할 때는 반드시 자신이 사용하고자 하는 데이터의 최대 크기를 고려해야한다.
- 해당 타입이 표현할 수 있는 범위 밖의 데이터를 저장하면, Overflow가 발생해 전혀 다른 값이 저장되기 때문이다.
- Overflow는 해당 타입이 표현할 수 있는 최대 범위보다 큰 수를 저장할 때 발생하는 현상이며, 발생 시 최상위 비트를 벗어난 데이터가 인접 비트를 덮어쓰므로, 잘못된 결과를 얻게 된다.
- 그 반대로 최소 범위보다 작은 수를 저장할 때 발생하는 것은 Underflow라고 한다.
public class OverflowExample{
public static void main(String[] args){
byte num1 = 127;
byte num2 = -128;
num1++;
num2--;
System.out.println(num1); // -128;
System.out.println(num2); //127;
}
}
실수형 타입 |
지수의 길이 |
가수의 길이 |
유효 자릿수 |
float |
8 비트 |
23 비트 |
소수 부분 6자리까지 오차없이 표현할 수 있음. |
double |
11 비트 |
52 비트 |
소수 부분 15자리까지 오차없이 표현할 수 있음. |
실수형 타입 |
할당되는 메모리의 크기 |
데이터의 표현 범위 |
리터럴 타입 접미사 |
float |
4바이트 |
(3.4 X 10-^38) ~ (3.4 X 10^38) |
F 또는 f |
double |
8바이트 |
(1.7 X 10^-308) ~ (1.7 X 10^308) |
D 또는 d (생략 가능함) |
- 자바에서 실수는 소수부나 지수부가 있는 수를 가르키며, 정수보다 넓은 표현 범위를 가진다
- 하드웨어 발달로 현재에는 double형을 많이 사용하며, 기본이 되는 타입은 double형이다
- 실수형 데이트 타입 결정 시에는 표현 범위 이외에 유효 자릿수를 고려해야한다.
- 컴퓨터에서 실수를 표현하는 방식은 오차가 발생할 수 밖에 없는 태생적 한계를 가지며, 모든 프로그래밍 언어에서 발생하는 공통된 문제이다
문자형 타입 |
할당되는 메모리의 크기 |
데이터의 표현 범위 |
char |
2 바이트 |
0 ~ 216 |
- 자바에서 문자형 타입은 작은 정수나 문자 하나를 표현할 수 있는 것을 의미한다
- 기본은 char 타입이다
- 컴퓨터는 2진수 밖에 인식하지 못하므로 문자도 숫자료 표현해야 인식할 수 있다
- 자바에서는 유니코드를 사용하여 각 나라 모든 언어를 표현할 수 있으며, 유니코드는 문자 하나를 16비트로 표현하므로, 총 65,536개의 문자를 표현할 수 있다
논리형 타입 |
할당되는 메모리의 크기 |
데이터의 표현 범위 |
boolean |
1바이트 |
true 또는 false |
- boolean형의 기본 값은 false이며, 가장 작은 크기인 1바이트의 크기를 가진다
댓글