주인장의 프로그래밍 개발 공부방

[Chapter 1 변수] 2. 변수의 타입(Type)에 대해서 알아보자. 본문

프로그래밍 기본 지식/Chapter 1 변수

[Chapter 1 변수] 2. 변수의 타입(Type)에 대해서 알아보자.

거신 2019. 5. 10. 01:11

우리는 앞서 프로그래밍에서 말하는 변수에 대해서 알아봤다.

변수(Variable)란

하나의 값을 저장할 수 있는 저장공간

이라고 했는데 이 변수라고 하는 녀석은 저장되는 값의 형태에 따라서

다른 모습을 지니게 된다.

쉽게 말해 값이라는 스타일이 있으면 그에 걸맞는 스타일의 옷을 입어줘야

간지가 철철 넘치는 변수가 된다는 말이 된다.

그러면 그 옷에는 무엇이 있고 어떻게 있는지에 대해서 알아보자.

 

목표 : 변수의 타입(Type)에는 무엇이 있는지 알고 타입들의 특징을 정확하게 알 수 있을 것.

 

1. 변수의 분류

 

우리가 배우는 자바에서는 변수를 크게 2가지로 분류를 할 수 있다.

바로 기본형 변수(Primitive Variable)와 참조형 변수(Reference Variable)이 그 것이다.

 

자 그러면 기본형 변수(Primitive Variable)와 참조형 변수(Reference Variable)에 대해서 간단하게만 살펴보자.

 

먼저 기본형 변수(Primitive Variable)이다.
앞서 우리는 변수라는 것을 배웠는데 변수는 하나의 값을 저장한다고 배웠다.

이 기본형 변수는 실제 값을 저장하는 변수가 되겠다.

 

아니, 값이면 값이지 실제 값은 무슨 소리임?이라고

궁금할 수도 있는데 실제 값이란

우리들이 직접 지정하고 저장하는 값을 말한다.

다시 말해, 문자, 숫자, 문자열 등등의 값들을 말하는 것이다.

 

다음으로 참조형 변수(Reference Variable)이다.

이 변수는 개념이 조금 어려운 변수인데 기본형 변수와 다르게

실제 값을 저장하는 것이 아니라 객체의 주소 값을 저장하는 녀석이다.

더 간단하게 말하면 실제 값이 아닌 주소 값을 저장한다는 말이다.

아니 주소 값은 또 뭐임?이라고 너무나도 당연하게 질문이 나올텐데

이거는 나중에 좀 더 자세하게 배워보도록 하자.

지금은 주소 값을 저장한다는 것만 알고 있으면 충분할 것이다.

 

정리하자면 변수는 크게 기본형 변수(Primitive Variable)과 참조형 변수(Reference Variable)로 구분할 수 있고

기본형 변수는 실제 값을 저장하는 변수,

참조형 변수는 주소 값을 저장하는 변수가 되겠다.

 

2. 기본형 변수(Primitive Variable)의 타입

 

이 글 맨 처음에 말했는데 변수는 다양한 형태의 값들이 저장되는데

사용자가 그냥 값을 넣어서 사용할 수 있는 것이 아니라

스타일에 맞는 옷을 입혀줘야 간지가 산다고 말했었다.

이는 기본형 변수의 특징이면서 가장 기본적인 지식이라고 할 수 있겠다.

 

기본형 변수의 형태에는 총 8가지가 존재하는데

이를 크게 4분류로 나누면

1. 문자형

2. 정수형

3. 실수형

4. 논리형

으로 나눌 수가 있겠다.

 

1번은 말그대로 문자를 사용할 때 입히는 옷이고

2번과 3번은 숫자를 사용할 때인데 정수는 당연히 0을 포함한 정수를 사용할 때,

실수는 실수를 사용할 때 입히는 옷이 되겠다.

4번의 논리형은 조금은 생소할 수 있겠지만 참, 거짓처럼 논리 값을 사용할 때 입히는 옷이다.

 

이 4가지의 형태에서 세부적으로 들어가면 총 8개의 타입이 존재하는데

8개를 나열해보자면 char, byte, short, int, long, float, double, boolean이 되겠다.

뜬금없이 영어 단어가 얼굴을 비추기 시작하니 머리가 아파오기 시작한다.

하지만 어렵게 생각하지 말고 딱 8개만 기억하자.

우리가 영어단어 8개 외우는데 한 달씩 걸리고 그런거 아니잖아?

 

이제 기본형 변수의 타입에는 뭐가 있는지 알아봤으니 좀 더 디테일하게 알아보자.

 

3. (심화) 기본형 변수(Primitive Variable) 타입

 

자 이제 좀 더 디테일한 내용을 알아보자.

먼저 기본형 변수에는 총 8개의 타입이 있다고 말했다.

char, byte, short, int, long, float, double, boolean이 있는데

이 녀석들이 어디에 쓰이며 어떤 특징을 가지고 있는지 알아보자.

 

1) char

char는 문자인 Character의 약자로 문자형 변수타입에 쓰인다.

2byte의 크기를 가지고 있고 문자 하나를 저장할 수 있는 공간이 되겠다.

가령 컴퓨터에서 알파벳은 1byte의 크기를 가지고 있고

한글 '가'는 2byte의 크기를 가지고 있다.

 

과거에는 char의 크기가 1byte였는데

이는 컴퓨터에서 쓰이는 언어가 영어 밖에 없었기 때문에 문제가 되지 않았지만

시간이 지나 다양한 언어를 지원하기 시작하면서 1byte로는 부족하게 되었고

현재의 char는 2byte의 크기를 가지게 되었다.

 

즉, 다양한 언어를 지원하기 위해서 크기를 늘렸다는 뜻이 되겠다.

 

2) byte

byte는 정수형의 변수타입에 쓰인다.

정수형 변수타입 중에서 가장 작은 크기인 1byte의 크기를 가지고 있고

1byte는 8bit의 크기를 가지는데 이는 2의 8제곱만큼의 숫자를 저장할 수 있다는 뜻이 된다.

그러면 2의 8제곱이 256이니 저장할 수 있는 수의 범위는 1부터 256이 아니냐고 할 수 있을텐데,

정수는 -와 0, 그리고 +의 숫자를 모두 포함하기 때문에

+범위와 0, -범위를 모두 포함하게 되면

0을 포함해 -2의 7제곱부터 (2의 7제곱 -1) 사이의 숫자를 저장할 수 있다는 말이 된다.

계산하면 -128 ~ 0 ~ +127이 된다는 셈이다.

여기에서 왜 2의 8제곱이 아니라 2의 7제곱이 되는지에 대한 자세한 설명은 다음으로 미루도록 하자.

 

지금은 byte가 무슨 형태의 변수에 사용하는지와 얼마의 크기를 가지는지만 알면 충분하다.

 

3) short

short 역시 byte와 동일하게 정수형의 변수타입에 쓰인다.

변수의 크기는 2byte로 16비트 정수형을 지원하기 위해서 만들어진 타입이다.

 

4) int

우리가 앞으로 지겹도록 만나게 될 변수타입이다.

역시 정수형 변수타입에 사용되고 정수형 변수타입의 기본 값이 되겠다.

크기는 4byte로 32비트의 정수형을 지원한다.

정수형 변수를 사용하는데 가장 기본적이고 많이 사용하는 타입이니 눈여겨 봐놓자.

 

5) long

정수형 타입에서 가장 큰 크기를 가지고 있는 타입이다.

8byte의 크기를 가지고 있으며 64비트의 정수형을 지원한다.

 

6) float

다음으로 실수형 타입에 사용되는 float이다.

정수를 제외한 실수를 표현할 때 사용하는 타입이고

크기는 4byte를 가지고 있다.

 

7) double

정수형에 int가 있다면 실수형에는 double이 있다.

정수형의 int처럼 실수형 타입의 기본 값이 되겠다.

크기는 8byte를 가지고 있으며 우리가 소수점을 표현할 때는 일단 double을 쓴다고 보면 된다.

 

8) boolean

논리형 변수타입에 쓰이는 녀석이다.

boolean은 다른 타입과 달리 참(true), 거짓(false) 두 개의 값만 가지기 때문에

1byte의 크기를 가지고 있다.

 

4. 마무리

 

이로써 우리는 변수가 어떤 것이 있으며 그 특징은 무엇인지에 대해서 알아봤다.

여기서 소개한 기본형 변수 8개의 타입은 가장 기본적인 것이기 때문에

꼭 외웠으면 한다.

아니 외워야만 한다.

왜냐하면 앞으로 우리가 프로그래밍할 코드에서 수없이 등장하고

우리들이 수없이 사용해야 하는 것들이기 때문에

무엇보다도 제대로 알고 있어야하기 때문이다.

 

마지막으로 정리를 하면

변수는 크게 기본형 변수와 참조형 변수로 나눌 수 있고

기본형 변수는 실제 값을 저장하는 것, 참조형 변수는 주소 값을 저장하는 것이다.

여기서 기본형 변수에서 다시 4개의 자료형과 8개의 타입으로 구분하는데

문자형, 정수형, 실수형, 논리형으로 나뉘고

char, byte, short, int, long, float, double, boolean의 타입으로 표현할 수 있다.

표로 정리하자면

크기/자료형 문자형 정수형 실수형 논리형
1byte   byte   boolean
2byte char short    
4byte   int (기본 값) float  
8byte   long double (기본 값)  

로 표현할 수 있겠다.

Comments