본문으로 바로가기

primitive(원시형) 변수타입 정의

 

변수란 특정 값들은 담는 메모리 공간이라고 챕터에서 정의 하였다.

 

이번장에서는 변수타입중에서도 primitive(원시형) 자료타입에 대해 알아보도록 한다.

 

primitive 자료형은 계산식 없이 일반적인 상수 값으로 셋팅할 있다. (상수란 변하지 않는 값을 의미)

 

예제)

1
2
3
4
5
int a = 0;
 
char c = 'C';
 
float a= 3.14F;
 

 

 

primitive(원시형) 변수타입 종류

 

primitive 변수타입의 종류는 아래 그림과 같이 '문자열', '정수형', '부동소수점', '논리형' 4가지로 구분될 있다.

<원시형 타입 종류>

 

 

타입별로 알아보도록 하자.

 

 

1. 문자열 변수타입(char)

 

한개의 문자 값에 대한 자료형은 'char' 이용한다.   특징은 다음과 같다.

 

메모리 크기

표현 범위

2 Byte

\u0000~\uFFFF

 

char 타입은 엄밀히 말하면 유니코드 문자를 처리할 있도록 설계된 문자열 변수타입이다.  \u0061이란 유니코드를 예로 들면 해당 코드는 문자 'a' 저장해둔 공간을 의미하며char uniTest = '\u0061' 과같이 값을 대입하면 문자열 A 대입한것과 같은 의미이다. 유니코드를 처리할 있기 위해 메모리가 2Byte 필요하다.

 

또한 char 타입에 저장된 값은 실제로는 숫자를 가르킨다. 문자 'a' '아스키코드' 97 의미한다.

 

값을 대입하기 위해 다음 3가지 방법으로 값을 대입할 있다.

 

1) 단일 문자열

2) 아스키코드(문자열의 숫자값)

3) 유니코드값(문자열 맵핑 공간)

 

사용법은 아래와 같다.

 

예제)

 

1
2
3
4
5
6
7
8
9
10
11
12
13
char TestChar = 'c';
 
char TestAscii = 99;
 
char TestUnicode = '\u0063';
 
 
 
System.out.println(TestChar);
 
System.out.println(TestAscii);
 
System.out.println(TestUnicode);
 

결과)

 

1
2
3
4
5
c
 
c
 
c
 

소스는 모두 문자 'c' 출력한다. 그렇다면 아스키코드, 혹은 유니코드를 자바에서 사용할까?? 부분은 자바

기초 지식을 쌓은후에 배워야 하지만 기본적으로 국가별 언어를 나누어서 저장하고 비교하기 위해서 사용한다.

예를들어 특정 "문자열" 한국어와 일본어가 섞여 있다고 치면 문자열에서 일본어만 제거하기 위해서 유니코드표를 이용하여 쉽게 제거할 있다 부분과 관련하여 추후에 문자열 인코딩 부분에서 다루기로 한다.

 

 

 

2. 정수형 변수타입(byte, short, int, long)

 

정수형 숫자를 저장할 있는 변수타입을 의미한다.(정수 : 음의정수(-3,-2,-1), 0, 자연수(1,2,3,4…) 포함하는 수의 집합).

정수형 타입은 아래와 같이 4가지로 나뉘며, 포함할 있는 숫자의 범위로 구분짓는다.

 

구  분

메모리 크기

정수 범위

byte

1 Byte

-128 ~ 127

short

2 Byte

-32,768 ~ 32,767

int

4 Byte

-2,147,483,648 ~ 2,147,483,647 (약 21억)

long

8 Byte

-263 ~ 263승-1  (9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807)

 

종류별 정수 범위는 메모리 크기만 알고 있다면 쉽게 유추해 있다. 사전적 지식으로 1Byte = 8bit임을 알아야 한다.

short 2Byte 이므로 16bit이며 이는 216 의미한다. 수에서 음수와 양수를 모두 표현해야 하므로 2 나누어 주면 216-1 되며 -215 ~ 215-1 = -32,768 ~ 32767임을 있다.

 

가장 광범위 하게 사용되는 타입은 int형이므로, 다른 정수형 타입은 몰라도 int 타입이 21억까지의 , 양의 정수를 저장 있다는것을 기억해 두도록 하자.

 

사용법은 아래와 같다.

 

예제)

1
2
3
4
5
6
7
8
9
10
11
12
13
byte numericByte = 120;
 
int numericInt = 1999999999;
 
long numericLong = 19999999999L;
 
 
 
System.out.println(numericByte);
 
System.out.println(numericInt);
 
System.out.println(numericLong);
 

 

예제 소스에서 주목할만한 점은 long 타입 변수선언시에 보이는 접미사 대문자 'L'이다. 해당 문자는 long타입 변수에 int 범위를 초과하는( 21) 정수형 값을 대입했을때 반드시 붙여줘야 하는 접미사이다. 이부분은 잊지말고 기억해 두도록 하자.

 

 

 

3. 부동소수점(실수형) 변수타입(float, double)

 

실수형 숫자를 저장할 있는 변수타입을 의미한다. (실수 : 유리수와, 무리수를 모두 합친 )

실수형 타입도 정수형 타입과 마찬가지로, 범위로 구분짓는다.

 

구  분

메모리 크기

표현 범위

float

4 Byte

1.40239846E-45f ~ 3.40282347E+38f

double

8 Byte

4.94065645841246544E-324 ~ 1.79769313486231570E+308

 

사용방법은 다음과 같다.

예제)

1
2
3
4
5
6
7
8
9
10
11
12
13
float nemericFloat = 3.14F;
 
double nemericDouble= 124.537;
 
double nemericDouble2= 1.24537e2;
 
 
 
System.out.println(nemericFloat);
 
System.out.println(nemericDouble);
 
System.out.println(nemericDouble2);
 

 

예제 소스에 주목할만한 점은 float 타입 변수선언시에 보이는 접미사 대문자 'F'이다. 

실수는 디폴트로 double형으로 저장되기 때문에 접미사 'F' 붙여줘야 한다.

 

또한 double 타입 변수 nemericDouble nemericDouble2 대입한 실수 124.537 1.24537e2 같은 이다. e2 102 의미하며 1.24537e2 1.24537 * 102 의미한다.

 

 

 

 

4. 논리형 변수타입(boolean)

 

(true), 거짓(false) 값을 갖는 변수타입을 논리형 변수타입이라 한다. 

 

구  분

표  현

true

거짓

false

 

사용방법은 다음과 같다.

예제)

1
2
3
4
5
6
7
8
9
boolean boolTrue = true;
 
boolean boolfalse= false;
 
 
 
System.out.println(boolTrue);
 
System.out.println(boolfalse);
 

 

 

 

 

5. 8진수, 16진수 표현(int)

 

8진수와 16진수는 int 변수타입으로 표현 있다.

 

0으로 시작하면 8진수로 인식하며, 0x 시작하면 16진수로 인식한다.

 

사용방법은 다음과 같다.

예제)

1
2
3
4
5
6
7
8
9
int octalInt = 024;
 
int hexInt = 0xd;
 
 
 
System.out.println(octalInt);
 
System.out.println(hexInt);
 

 

결과)

1
2
3
20
 
13