늦은 프로그래밍 이야기
기본 자료형의 메모리 크기와 데이터 표현 범위 본문
자료형 (Data type)
- 해당 데이터가 메모리에 어떻게 저장되고, 프로그램에서 어떻게 처리되어야 하는지 명시적으로 알려주는 역할.
기본 타입 (Primitive Type)
- 기본 타입은 모두 8종류가 제공되며, 크게 정수형, 실수형, 문자형, 논리형 타입으로 나눌 수 있다.
정수형 타입
- 부호를 가지고 있고, 소수 부분이 없는 수.
- 정수형 타입은 다음과 같다.
1) byte
2) short
3) int (integer)
4) long
- 정수형 타입의 기본이 되는 타입은 int형이다. 따라서 int형의 데이터를 가장 빠르게 처리한다.
- 메모리 크기, 데이터의 표현 범위
| 타입 | 메모리 크기 | 데이터의 표현 범위 |
| 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 |
- 양수의 범위에 '0'이 포함되므로 양수의 범위가 1 좁다.
오버플로우 (Overflow)
- 해당 타입이 표현할 수 있는 최대 범위보다 큰 수를 저장할 때 발생하는 현상.
byte num1 = 127;
num1++; // 127 + 1
System.out.println(num1); // -128
- 표현 최대 범위를 넘어서면 오버플로우가 발생하여 잘못된 결과가 저장된다.
언더플로우 (Underflow)
- 해당 타입이 표현할 수 있는 최소 범위보다 작은 수를 저장할 때 발생하는 현상.
byte num2 = -128;
num2--; // -128 - 1
System.out.println(num2); // 127
- 표현 최소 범위를 넘어서면 언더플로우가 발생하여 잘못된 결과가 저장된다.
실수형 타입
- 소수부나 지수부가 있는 수.
- 정수보다 훨씬 더 넓은 표현 범위를 가진다.
- 실수를 나타내는 타입은 다음과 같다.
1) float
2) double
- 실수형 타입의 기본이 되는 타입은 double형이다.
- 유효 자릿수
| 타입 | 지수의 길이 | 가수의 길이 | 유효 자릿수 |
| 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 (생략 가능) |
문자형 타입
- 정수 혹은 문자 하나를 표현할 수 있는 타입.
- char
- 유니코드(unicode)를 사용하여 문자를 표현.
- 유니코드는 문자 하나를 16비트로 표현하므로, 총 65,536개의 문자를 표현할 수 있다.
- 메모리 크기, 데이터 표현 범위
| 타입 | 메모리 크기 | 데이터 표현 범위 |
| char | 2 바이트 | 0 ~ 2^16 (65,536) |
논리형 타입
- 참(true)이나 거짓(false) 중 한가지 값만 가질 수 있는 boolean타입.
- boolean
- boolean 타입의 기본 값은 false이다.
| 타입 | 메모리 크기 | 데이터 표현 범위 |
| boolean | 1바이트 | true 또는 false |
'내일배움캠프 > Java 기초' 카테고리의 다른 글
| 타입 변환 (0) | 2022.11.17 |
|---|---|
| 실수의 표현 방식 (0) | 2022.11.17 |
| 컬렉션, 제네릭스 (0) | 2022.11.16 |
| 객체지향 (3) 추상클래스, 인터페이스 (0) | 2022.11.16 |
| 객체지향 (2) 상속, 접근제어자 (1) | 2022.11.15 |