글 작성자: 개발자 올라프

개요

  • 자바 기본형의 저장범위는 각 자료형 비트의 크기에 따라 다르다. 어떠한 방식으로 저장되는지 이해하고 저장 가능한 범위를 외우기 보다는 계산하면 알아낼 수 있도록 정리를 하고자 한다.

 


 

기본형(primitive type)

자바의 기본형에는 8개의 타입이 있으며 논리형, 문자형, 정수형, 실수형으로 구분할 수 있다.

정수형 저장 가능한 범위는 아래의 식과 같다.

이 식을 아래의 byte자료형에 대입하여 저장 가능한 범위를 알아보자

이를 통해서 정수형 byte의 저장 가능한 범위가 -128 ~ 127임을 알 수 있다.

 

분류 자료형 저장 가능한 범위 크기
논리형 boolean false, true 8bit / 1byte
문자형 char \u0000 ~ \uffff
(0~65535)
16bit / 2byte
정수형 byte -128 ~ 127 8bit  / 1byte
short -32,768 ~ 32,767 16bit / 2byte
int -2,147,483,648 ~ 2,147,483,647 32bit / 4byte
long -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 64bit / 8byte
실수형 float 1.4E-45 ~ 3.4E38 32bit / 4byte
double 4.9E-324 ~ 1.8E308 64bit / 8byte
  • 컴퓨터는 0과 1로된 2진수만 숫자로 인식할 수 있고, 1bit(컴퓨터가 값을 저장할 수 있는 최소단위)는 숫자를 인식할 수 있는 하나의 저장공간을 나타낸다.
  • 1byte는 8bit(binary digit)이며, 1byte는 8개의 0과 1로 표현이 가능한 수의 범위이다.
  • 가장 앞 부분인 부호형 비트가 0인경우 양수, 1인경우 음수를 나타낸다.
  • char의 경우 unsigned형식이기 때문에 맨 앞 비트를 음수 양수 형식으로 사용하지 않는다.

 

정수형은 아래와 같은 형식으로 수를 표현하고 있다(1byte 크기). short는 아래 형태를 2개, int는 4개, long은 8개를 가지고 있는 셈이다.

 

  • 가장 우측부터 계산해가며, 각 비트에 저장된 값과 비트 자리수의 승을 곱한 값을 더한다.

좌측
우측

>> 진수에 대해서 궁금하다면??

 


 

1. 논리형 boolean

(1) boolean은 true와 false 중 하나의 값을 갖으며, 조건식(0(no)/1(yes)), 스위치(on/off)등의 논리구현에 사용된다.

(2) 기본값은 false이다.

(3) Java에서 true와 TRUE는 대소문자를 구분하므로 서로 다른 값이다.

(4) boolean을 제외한 나머지 7개의 기본형은 연산과 변환이 가능하다.

 

2. 문자형 char

(1) 문자를 저장하는데 사용되며, 변수에 하나의 문자만 저장할 수 있다.

(2) 문자를 내부적으로 정수(유니코드)로 저장하므로 정수형 또는 실수형과 연산이 가능하다.

(3) 유니코드 체계를 사용하기 때문에 2byte를 차지한다. (a는 유니코드로 '\u0041'

 

3. 정수형 byte, short, int, long

(1) 정수를 저장하는데 사용되며, byte는 이진 데이터를 다룰 때, short는 C언어와의 호환을 위해서 사용된다.

(2) 정수형은 int가 기본 자료형(default data type)이다.

(3) 효율적인 실행은 int이지만, 메모리 절약을 위해 byte 혹은 short를 사용하는 경우가 있다.

(4) long타입의 변수를 선언 후 값을 저장할 때는 접미사 'L'을 붙여야 한다.

 

4. 실수형 float, double

(1) 실수를 저장하는데 사용된다.

(2) 실수형은 double이 기본 자료형이다.

(3) float타입의 변수를 선언 후 값을 저장할 때는 접미사'f'를 붙여야 한다.

(4) float의 정밀도는 7, double의 정밀도는 15자리이다.