Language/JAVA

2주차 과제 : 프리미티브 타입의 종류와 값의 범위 그리고 기본값

프리미티브 타입의 종류와 값의 범위 그리고 기본값

 

모든 변수에는 타입이 있고 타입에 따라 저장할 수 있는 값의 종류와 범위가 달라진다.

변수를 선언시 주어진 타입은 변수를 사용하는 동안 변경할 수 없다. 따라서 변수 선언 어떤 타입을 사용할 것인지 충분히 고려하자.

 

Primitive Type 타입이란 자바의 기본 타입으로서 정수, 실수, 문자, 논리 리터럴을 직접 저장하는 타입을 말한다.

 

값의 종류 기본 타입 메모리 사용 크기 저장되는 값의 범위
정수 byte 1 byte 8 byte -2^7~(2^7 - 1)(-128~127)
char 2 byte 16 bit 0 ~ 2^16 -1(유니코드 \u0000~\uFFFF, 0~65535)
short 2 byte 16 bit -2^15~(2^15 - 1)(-32,768 ~ 32,767)
int 4 byte 32 bit -2^31~(2^31 -1)(-2,147,483,648 ~ 2,147,483,647)
long 8 byte 64 bit -2^63 ~ (2^63 -1)
실수 float 4 byte 32 bit (+/-)1.4E-45 ~ (+/-)3.4028235E38
double 8 byte 64 bit (+/-)4.9E-324 ~ (+/-)1.7976931348623157E308
논리 boolean 1 byte 8 bit true, false

정수 타입(byte, char, short, int, long)

 

자바는 기본적으로 int 타입으로 정수 연산을 수행한다.

byte나 short를 사용하는 것이 메모리를 절약할 수는 있지만, 값의 범위가 작아 연산시에 범위를 초과하면 잘못된 결과를 얻을 수 있다.

 

char 타입

자바는 모든 문자를 유니코드(Unicode)로 처리한다. 유니코드는 세계 각국의 문자들을 코드값으로 매핑한 국제 표준 규약이다. 유니코드는 하나의 문자에 대해 하나의 코드값을 부여하기 때문에 영문 'A' 및 한글 '가'도 하나의 코드 값을 가진다. 유니코드는 0 ~ 65535 범위의 2byte 크기를 가진 정수값이다. 0 ~ 127까지는 아스키(ASCII) 문자가 할당되어 있고, 44032 ~ 55203까지는 한글 11172자가 할당되어 있다. 유니코드 음수가 없기에 음수값을 저장할 수 없다.

기본 값은 '\u0000'이다.

 

char var1 = 'A';	// 유니코드: 0x0041 => 2진수 : 00000000 01000001
char var2 = 'B';	// 유니코드: 0x0042 => 2진수 : 00000000 01000010
char var3 = '가';	// 유니코드: 0xAC00 => 2진수 : 10101100 00000000 
char var4 = '각';	// 유니코드: 0xAC01 => 2진수 : 10101100 00000001

 

char 타입에 작은 따옴표 (')로 감싼 문자가 아니라 직접 유니코드 혹은 정수값을 저장할 수도 있다. 

char c = 65;
char c = 'u0041';

프로그램 코드에서 char 변수에 저장된 유니코드를 알고 싶다면, char 타입 변수를 int 타입 변수에 저장하면 된다.

 

char c = 'A';
int unicode = c;

 

byte 타입 

 

1byte 범위의 수를 저장한다.

색상 정보 및 파일 또는 이미지 등의 이진(binary) 데이터를 처리할 때 주로 사용된다.

 

short 타입 

 

2byte(16bit)로 표현되는 정수값을 저장할 수 있는 데이터 타입

C언어와의 호환을 위해 사용되며 비교적 자바에서는 잘 사용하지 않는 타입

 

int 타입 

 

4byte(32bit)로 표현되는 정수값을 저장할 수 있는 데이터 타입

자바에서 정수 연산을 하기 위한 기본 타입. byte 타입 또는 short 타입의 변수를 + 연산하면 int 타입을 변환된 후 연산되고 연산의 결과 역시 int 타입이 된다. 자바에서 정수 연산을 4byte로 처리하기 때문이다. 

 

Long 타입 

 

8byte(64bit)로 표현되는 정수값을 저장할 수 있는 데이터 타입이다.

수치가 큰 데이터를 다루는 프로그램에서는 long 타입이 필수적으로 사용된다.

대표적인 예가 은행 및 우주와 관련된 프로그램들이다.

long 타입의 변수를 초기화할 때에는 정수값 뒤에 소문자 'l' 이나 대문자 'L'을 붙일 수 있다.

이것은 4byte 정수 데이터가 아니라 8byte 정수 데이터임을 컴파일러에게 알려주기 위한 목적이다.

int 타입의 범위를 넘어가는 경우 소문자 'l' 이나 대문자 'L' 을 붙여야 에러가 나지 않기에 반드시 붙여 줘야한다.

 

실수 타입(float, double)

 

실수 타입은 소수점이 있는 실수 데이터를 저장할 수 있는 타입으로, 메모리 사용 크기에 따라 float, double로 나뉜다.

 

논리 타입(boolean)

 

boolean 타입은 1byte(8bit)로 표현되는 논리값(true/false)을 저장할 수 있는 데이터 타입

두 가지 상태값을 저장할 필요성이 있을 경우 사용

상태값에 따라 조건문과 제어문의 실행 흐름을 변경하는데 주로 이용