Data Type(값의 타입)
자바에서는 Data Type(값의 타입)은 8가지이다. 이를 기본형이라고 하는데,
1. 문자 - char
2. 숫자
2-1. 정수 - byte, short, int, long
2-2. 실수 - float, double
3. 논리 - boolean
으로 구성된다.
변수(Variable)의 타입은 기본형과 참조형으로 나눌 수 있다.
1.기본형(Primitive type)
위의 8가지와 동일하고, 실제 값을 저장한다.
2. 참조형(Reference type)
기본형을 제외한 나머지(String, System 등)를 의미한다.
메모리 주소를 저장한다. ( 4byte 또는 8byte )
객체의 주소를 저장한다.
Theme. 기본형의 종류와 크기
1. 논리형
boolean type으로 true와 false 중 하나를 값으로 갖으며, 조건식과 논리적 계산에 사용된다.
2. 문자형
char type으로 문자를 저장하는데 사용되며, 변수 당 하나의 문자만을 저장할 수 있다.
3. 정수형
byte, short, int, long type으로 정수 값을 저장하는 데 사용된다.
4. 실수
float, double type으로 실수 값을 저장하는 데 사용된다.
기본형의 종류에 따른 크기를 나타낸 표는 다음과 같다.
종류 / 크기(byte) | 1 | 2 | 4 | 8 |
논리형 | boolean | |||
문자형 | char | |||
정수형 | byte | short | int | long |
실수형 | float | double |
Theme. 기본형의 표현 범위
1. byte
byte b;
1byte = 8bit이고, 1bit는 2진수의 한자리를 의미한다(0 or 1이 존재하는 자리)
1bit당 0 or 1의 2개의 값을 표현할 수 있으므로 n비트로 표현할 수 있는 값의 개수는 2^n개이다.
n비트로 표현할 수 있는 부호없는 정수(양수)의 범위: 0 ~ 2^n - 1 (0을 포함해야 해서 2^n에서 1을 빼줌)
따라서 , 8비트로 표현할 수 있는 부호 없는 정수(양수)의 범위는 0 ~ 255이다.
n비트로 표현할 수 있는 부호있는 정수의 범위: -2^(n-1) ~ 2^(n-2) - 1
따라서, 8비트로 표현할 수 있는 부호 없는 정수의 범위는 -128 ~ 127이다.
byte type의 변수에 값이 저장되는 방식은 아래 그림과 같다.
먼저, 전체 8bit 중 왼쪽의 1bit는 값의 부호를 나타내는 데 사용하는데, 이 비트를 .부호 비트(Sign bit)라고 한다.
부호비트의 값이 0이면 양수이고, 1이면 음수이다.
7bit는 128개의 값을 표현할 수 있으므로 양수 128개(0 ~ 127), 음수 128개(-128 ~ -1) 총 256개의 수를 나타낼 수 있다.
2. short
short는 크기가 2byte이므로 총 16bit이다.
위와 같은 방법으로 계산해보면,
2^15 = 32768이므로 -32768 ~ 32767의 수를 표현할 수 있다.
3. char
char는 크기가 2byte이므로 총 16bit이다.
4. int
int는 크기가 4byte이므로 총 32bit이다.
5. float, double
E38 = 10^38을 의미.
이때, float와 int는 동일한 4byte의 크기를 가지는데, float의 저장 가능한 값의 범위가 훨씬 큰 이유는 무엇일까?
그 이유는 값의 저장 방식에 있다.
S는 부호, E는 지수, M은 가수를 의미하는데, 3.4E38에서 3.4가 가수이고, 38이 지수에 해당한다. 따라서 int보다 더 큰 범위를 가지게 되는 것이다.
위 표에서 "정밀도"란 값과의 오차없이 표현할 수 있는 자릿수를 의미한다.
float의 경우 10진수로 7자리까지는 오차없이 표현할 수 있고, double의 경우 15자리까지는 오차없이 표현할 수 있다.