1. 논리형(boolean)
- true / false
- 기본값(default)는 False
- 논리구현에 사용
- 1 bit로도 충분하지만, 자바에서는 최소단위가 byte이기 때문에 1 byte로 표현
- 자바에서는 대소문자가 구별되기 때문에 TRUE와 true는 다름, true가 맞는 표현
boolean power = true; (O)
boolean checked = False; (X)
자료형 | 저장 가능한 값의 범위 | 크기 (bit) | 크기 (byte) |
boolean | false, true | 8 | 1 |
2. 문자형(char)
- 단 하나의 문자만을 저장
- 실제로는 문자의 유니코드(정수)가 저장
char ch = 'A';
char ch = 65;
-> 동일한 결과
- 2 byte(=16 bit)로 표현
16비트로 표현할 수 있는 정수의 개수 : 216개 (65526개)
short타입의 표현범위 : -215 ~ 215 - 1 (-32768~32767)
char타입의 표현범위 : 0 ~ 216 - 1 (0~65535)
- 특수 문자
특수 문자 | 문자 리터럴 |
tab | \t |
backspace | \b |
form feed | \f |
new line | \n |
carrige return | \r |
역슬래쉬(\) | \\ |
작은따옴표('') | \' |
큰따옴표("") | \" |
유니코드(16진수)문자 | \u유니코드 ( ex) '\u0041' ) |
- 문자 인코딩(Encoding) : 문자를 코드로 변환하는 것
- 문자 디코딩(Decoding) : 코드를 문자로 변환하는 것
- 아스키(ASCII, American Standard Code for Inforamtion Interchange) : 정보교환을 위한 미국 표준 코드, 128개(=27)의 문자 집합을 제공하는 7 bit 부호 (0~9, A~Z, a~z가 연속적으로 배치되어 있음)
- 확장 아스키(Extended ASCII) : 7 bit인 아스키의 남는 공간 1 bit에 문자를 추가로 정의한 것
- 코드 페이지(code page, cp) : 확장 아스키의 256개 문자를 어떤 숫자로 변환할 것인지 적어놓은 문자 코드표
- 유니코드(Unicode) : 전 세계의 모든 문자를 하나의 통일된 문자집합으로 표현하기 위한 코드
- 자바에서는 UTF-16(모든 문자를 2 byte의 고정크기로 표현) 사용
자료형 | 저장 가능한 값의 범위 | 크기 (bit) | 크기 (byte) |
char | '\u0000' ~ '\uffff' (0~216-1, 0~65535) | 16 | 2 |
3. 정수형(byte, short, int, long)
1) 크기 비교
byte(1 byte) < short(2 byte) < int(4 byte) < long(8 byte)
-> 기본 자료형(default data type)은 int
2) 표현방식과 범위
S : 부호 비트 (양수는 0, 음수는 1)
n : 타입의 크기 (단위: bit)
정수형의 표현형식 (n bit) | 종류 | 값의 개수 |
![]() |
0, 양수 | 2n-1개 |
![]() |
음수 | 2n-1개 |
n비트로 표현할 수 있는 정수의 개수 : 2n개 (= 2n-1개 + 2n-1개)
n비트로 표현할 수 있는 부호있는 정수의 범위 : -2n-1개 ~ 2n-1 - 1
-1을 빼는 이유는 0이 포함되기 때문
ex) byte 타입
표현할 수 있는 정수의 개수 : 256개
표현할 수 있는 부호있는 정수의 범위 : -128 ~ 127
자료형 | 저장 가능한 값의 범위 | 크기 (bit) | 크기 (byte) |
byte | -128 ~ 127 (-27~27-1) | 8 | 1 |
short | -32,768 ~ 32,767 (-215~215-1) | 16 | 2 |
int | -2,147,483,648 ~ 2,147,483,647 (-231~231-1) | 32 | 4 |
long | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,808 (-263~263-1) | 64 | 8 |
3) 정수형의 선택기준
- 정수형 변수를 선언할 때는 int타입
- int의 범위(약 ±20억)를 넘어설 때는 long타입
- byte타입과 short타입은 성능보다 저장공간을 절약하는데 사용
4) 오버플로우
- 오버플로우(overflow) : 해당 타입이 표현할 수 있는 값의 범위를 넘어서 예상치 못한 결과를 얻는 것
- 오버플로우가 발생하지 않게 충분한 크기의 타입을 선택해서 사용해야 함
- 부호있는 정수는 부호비트가 0에서 1이 될 때 오버플로우가 발생
4. 실수형(float, double)
1) 범위와 정밀도
- float 타입은 4 byte, double 타입은 8 byte 표현 가능
자료형 | 저장 가능한 값의 범위 | 크기 (bit) | 크기 (byte) |
float | 1.4E-45 ~ 3.4E38 (1.4×10-45~3.4×1038) | 32 | 4 |
double | 4.9E-324 ~ 1.8E308 (4.9×10-324~1.8×10308) | 64 | 8 |
- float 타입의 정밀도는 7자리 = 7자리의 10진수를 오차없이 저장할 수 있음
- double 타입의 정밀도는 15자리 = 15자리의 10진수를 오차없이 저장할 수 있음
- float 대신 double을 사용하는 경우는 대부분 저장하려는 '값의 범위' 때문이 아니라 '보다 높은 정밀도'가 필요해서임
2) 저장형식
- 부동소수점수(floating-point) 형태로 저장
- 부호(Sign), 지수(Exponent), 가수(Mantissa)로 이루어짐
- 부호(Sign) : 0이면 양수, 1이면 음수
- 지수(Exponent) : 부호있는 정수 (float은 -127~128, double은 -1023~1024)
- 가수(Mantissa) : 실제 값을 저장하는 부분, 10진수로 7자리(float), 15자리(double)의 정밀도로 저장 가능
S : 부호 비트 (양수는 0, 음수는 1) (1 bit)
E : 지수 (8 bit)
M : 가수 (23 bit)
S : 부호 비트 (양수는 0, 음수는 1) (1 bit)
E : 지수 (11 bit)
M : 가수 (52 bit)
참고 - Java의 정석 3rd Edition (저자 : 남궁성, 출판 : 도우출판)
'공부 > Java' 카테고리의 다른 글
[Java-03] 연산자(Operator) - 단항 연산자, 산술 연산자 (0) | 2021.02.02 |
---|---|
[Java-02] 변수(Variable) - 형변환(Casting) (0) | 2021.02.01 |
[Java-02] 변수(Variable) - 진법 (0) | 2021.01.30 |
[Java-02] 변수(Variable) - 변수와 상수, 변수의 타입 (0) | 2020.12.25 |
[Java-01] JDK 설치 및 환경변수 설정 (0) | 2020.12.23 |