자바에서는 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자리까지는 오차없이 표현할 수 있다.

'Java > 자바의 정석 정리' 카테고리의 다른 글

문자와 문자열  (0) 2023.01.16
변수, 상수, 리터럴  (2) 2023.01.04
변수(variable)  (0) 2023.01.03

+ Recent posts