프리미티브 타입의 종류와 값의 범위 그리고 기본값
모든 변수에는 타입이 있고 타입에 따라 저장할 수 있는 값의 종류와 범위가 달라진다.
변수를 선언시 주어진 타입은 변수를 사용하는 동안 변경할 수 없다. 따라서 변수 선언 어떤 타입을 사용할 것인지 충분히 고려하자.
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)을 저장할 수 있는 데이터 타입
두 가지 상태값을 저장할 필요성이 있을 경우 사용
상태값에 따라 조건문과 제어문의 실행 흐름을 변경하는데 주로 이용
'Language > JAVA' 카테고리의 다른 글
2주차 과제 : 1차 및 2차 배열 선언하기 (0) | 2021.02.13 |
---|---|
2주차 과제 : 프리미티브 타입과 레퍼런스 타입 (0) | 2021.02.13 |
2주차 과제 : 변수의 스코프와 라이프타임 (0) | 2021.02.13 |
2주차 과제 : 리터럴 (0) | 2021.02.13 |
2주차 과제 - 변수 선언 및 초기화하는 방법 (0) | 2021.02.13 |