관심쟁이 영호

[#3] 변수란? 본문

학교공부/자바의 왕!

[#3] 변수란?

관심쟁이 영호 2019. 5. 13. 22:04
반응형

안녕하세요 최고왕입니다.

 

오늘도 저의 글을 찾아주셔서 정말 감사합니다.

 

-----------------------------------------------------------------------------------------------------------------------------------

 

오늘은 변수에 대해서 알아보겠습니다!

 

변수를 공부하기에 앞서 분류를 해보자면..

 

변수

 

1. 변수란? 그리고 상수란?

 

2. 변수도 타입이 있다!

 

3. 변수 타입에 대해 자세히 알아보자.

 

4. 변수의 형 변환?

 

 

이렇게 네 가지로 나눌 수가 있을 것 같아요 ㅎㅎ 

 

차례대로 가봅시다!

 

1. 변수란? 그리고 상수란?

 

변수란???

 

컴퓨터는 그냥 머리 좋은 깡통이라고 생각해야 해요 이제!

 

그래서 저희는 컴퓨터에게 하나하나 설명을 해줘야 하고 설명해준 값을 계산하고 보여줘!라고 했을 때

 

컴퓨터는 그때가 돼서야 계산을 해요.

 

예를 들면 a = 10  // b = 20 일 때,  a + b는 30이죠~? 

 

이것을 컴퓨터에게 시킬 때는.

 

int a = 10;                  

 

int b = 20;

 

System.out.println("a" + " + " + "b" + " = " + (a + b)); 

 

라고 길게 표현을 해줘야 해요. 저 글들은 컴퓨터에게 하나하나 설명을 해주며 계산을 시킨다고 생각하시면 편해요!

 

그래서 저 과정 중에서 

 

int a = 10;                  

 

int b = 20;

 

a는 10이고 b는 20이야!

 

라고 컴퓨터에게 설명해주는 단계를 변수를 설정해주는 단계라고 말할 수 있어요. (int는 뒤에 가서 설명할게요)

 

천천히 접근을 해보면

 

변수의 사전적인 의미는 "어떤 상황의 가변적인 요인"이라고 하네요!

 

이 말과 같이 프로그래밍에서의 변수란 "어떤 상황에 따라 변할 수 있는 값"이라고 말할 수 있을 거 같습니다!

 

우리의 컴퓨터의 내부에는 메모리 공간이 있어요.

 

거기에 값을 저장하는데 그 값을 저장하는 메모리 공간을 변수라고 할 수 있어요!

 

좀 더 이해하기 쉽게 표현을 하자면 "변수를 지정한다!"를 예로 들게요.

 

우리는 컴퓨터에게 명령을 할 거예요 ㅎㅎ 

 

a = 10이라고 기억하라!

 

그럼 컴퓨터는 a는 10이다..라고 메모리상으로 값을 저장할 겁니다.

 

여기서 이 과정을 변수를 선언(지정)해준다고 말할 수 있어요 ㅎㅎ 

 

여기서 a는 10이 아니라 1, 2, 100, 1012304 등등 엄청나게 다양한 값을 지정해줄 수 있어요!

 

그래서 이것을 변수라고 해요!

 

a = 10;

 

여기서 a라는 곳에 10을 초기화했다고 말을 할 수 있어요.

 

프로그래밍상에서의 초기화는 어떤 상자에 값을 넣어준다는 의미를 나타내요!!

 

상수란??

 

상수는 변수와 비슷해요. 하지만 한번 지정하고 나면 값을 변경할 수가 없어서 상수라고 말을 합니다.

 

상수도 변수와 같이 선언을 해주어야 해요!

 

선언 법은 변수와 같아요.

 

final int A = 10;

 

똑같이 해주되, 앞에 final을 붙여야 합니다!

 

그리고 상수의 이름은 항상 대문자로 표현해야 해요!

 

또 하나 더! MAX_SPEED처럼 두 가지의 단어로 상수의 이름을 표현해줄 때는 "_"로 두 단어를 구분해주어야 해요.

 

여기서 "리터럴"이라는 개념을 하나 더 알아두여야 하는데 머리가 아프니 추후에 설명드릴게요!

 

2. 변수도 타입이 있다!

 

변수도 타입이 있다? 무슨 소리인지 감이 오시는 분도 있고 없는 분도 있을 거예요.

 

먼저 설명을 드리자면

 

변수는 세 가지로 나눌 수 있어요.

 

1. 기본형 (논리형, 문자형, 정수형, 실수형)

 

2. 참조형 

 

으로 구분이 돼요.

 

 

 

 

실수형은 학창 시절에 수학 공부를 하며 보신 적이 있을 거예요!

 

그림 먼저 보시고 관계에 대해 공부를 시작할게요~~

 

변수는 아까의 a처럼 10 뿐만 아니라 0, 0.1, 100000000000000, abc, true or false 등등등으로 표현을 할 수 있어요!

 

이것들 각각 타입이 달라요.

 

그럼 컴퓨터가 이렇게 타입을 다르게 인식하는 이유가 무엇일까요?

 

저도 이 이유를 알고 싶어 컴퓨터 선생님께 전화를 해서 물어봤어요 ㅠ

 

그 이유는.

 

컴퓨터에게 연산을 시켰을 때 범위에 따라 컴퓨터가 탐색하는 영역이 다르데요.

 

컴퓨터가 연산을 하기 전에 우리가 범위를 지정해두면 그만큼 컴퓨터가 탐색하는 영역이 작아지고,

 

컴퓨터의 부담을 적게 주어 효율적인 메모리 사용이 가능하다고 하시네요!

 

다른 이유들도 있겠지만 이 정도로만 짚어두고

 

가장 먼저.

 

실수형부터 말씀드릴게요

 

 

실 수 형

 

말 그대로 실수를 나타내는 구간입니다. float, double이 있어요.

 

똑같이 실수를 표현하지만 범위가 달라요! 

 

float < double 이 표현하는 범위가 더 큽니다. 

 

범위 내의 실수를 표현할 때에 사용하는 타입이죠!

 

범위를 정확히는 알 필요 없어요!

 

정 수 형

 

정수를 나타내는 구간입니다. byte, short, int, long이 있어요.

 

마찬가지로 정수를 표현하지만 범위가 다르겠죠~?

 

실수와는 다르게 정수는 약간의 범위를 알아두시는 게 편해요.

 

byte = -128 ~ 127

int   = -2,147,483,648 ~ 2,147,483,647

 

정도만 알아 둡시다!

 

문 자 형

 

문자형에는 char이라는 게 있어요!

 

이것은 문자를 표현해줄 때 사용하는 타입이에요.

 

예를 들자면~~

 

a = b이라고 표현을 할 때 사용되는 것이지요~~

 

논 리 형

 

이것은 다른 것들과는 다르게 논리를 변수에 저장하는 것인데요.

 

true / false로 변수에 선언을 할 수 있어요!

 

 

3. 변수의 타입에 대해 자세히 알아보자

 

위 글에서 a , b를 선언한 부분을 보면

 

int a = 10;

 

int b = 20;

 

이라고 선언한 것을 보실 수 있어요!

 

□ = □;라고 구분을 하면

 

int □ = int □;

 

왼쪽과 오른쪽 둘 다 값의 타입을 같이 선언해주어야 해요.

 

하지만 자바는 초기값이 int로 설정되어 있어서

 

int a = 10; 에서 오른쪽의 10 부분은 따로 int를 선언해두지 않았어요!

 

만약 int의 범위를 넘어섰을 때는!

 

int a = 2147483647;    -> int의 최댓값까지는 선언이 가능합니다! 하지만

 

int a= 2147483648;     -> 컴퓨터가 인식을 하지 못해요... 범위를 넘어섰기 때문이죠!

 

 

이클립스에서 a의 값으로 int를 벗어난 값을 넣어봤어요!

 

System.out.println();      -> 이것은 (  ) 안의 값을 출력하라는 명령이라고 알아두시면 돼요!

 

드래그되어있는 부분을 보면 out of range라고 범위를 벗어났다고 

 

에러가 났네요!

 

이럴 때는 범위가 더 큰 값으로 타입 선언을 해주면 되겠죠~?

 

해결법은.

 

long a = 2147483648L;으로 선언을 해주면 됩니다!

 

L은 long의 맨 앞글자 L을 표현해준 것입니다!

 

 

 

정상적으로 출력된 것을 볼 수 있네요 ㅎㅎ

 

 

 

4. 변수의 형 변환?

 

실제로 프로그램을 작성하다 보면 서로 다른 타입끼리 연산을 해주어야 할 때가 많대요!

 

서로 다른 타입끼리 연산을 해주어야 하는데 컴퓨터는 다른 타입을 연산할 줄 몰라요 ㅠㅠ

 

그래서 임의로 둘 사이에 연산이 가능한 타입으로 형 변환을 시켜준다음 계산을 실행하여야 하는데요~

 

그러기 위해서 형 변환을 알아보겠습니다!

 

어떤 값의 평균을 구해보니 85.4라는 값이 나와서 

 

double s = 90.4;라는 실수형의 s에 평균값을 선언해주었어요.

 

이 평균값을 이것을 score라는 int값에 넣고 싶습니다!

 

그러기 위해선 double의 타입인 s를 int의 값으로 형 변환을 시켜줘야 해요.

 

그 과정은

 

double d = 90.4;

 

int score = (int) s;

 

로 작성해주시면 됩니다!

 

그럼 int score의 값은 90.4에서 가장 가까운 정수인 90이 됩니다.

 

좀 더 세부적으로 들어가면 더 복잡해지고 설명해야 할 내용이 많아요!

 

하지만 여기서 형 변환의 내부까지 구체적으로 공부를 하게 된다면 우리는 공부에 흥미를 잃어버릴 거예요 ㅠㅠ

 

그래서 우리는 천천히 공부를 해가며 나중에 필요한 시점에 추가적인 공부를 할 예정입니다!

 

여기까지가 제가 준비한 수업이에요!

 

-----------------------------------------------------------------------------------------------------------------------------------

 

수고하셨어요!!!!!

 

오늘도 힘차게 공부를 해보았는데요~

 

이해가 잘 가셨을까 의문과 걱정이 들어요 ㅠㅠ

 

제가 이해한 그대로 최대한 풀어서 설명드리고 싶은데 

 

제가 거의 0개 국어라....

 

잘하고 있는 건지 모르겠네요.

 

부족한 설명, 이해 안 가는 부분, 잘못된 부분이 있으면 언제든지 댓글로 알려주시면 감사하겠습니다!!

 

최고왕이었어요 ㅎㅎ

 

오늘도 제 포스팅을 읽어주셔서 정말 정말 감사드립니다!

300x250

'학교공부 > 자바의 왕!' 카테고리의 다른 글

[#5]조건문  (0) 2019.06.10
[#4 연산] 컴퓨터에게 일을 시켜보자  (1) 2019.05.14
[#2.1 자바보충] 짚지못한 부분!  (0) 2019.05.13
[#2] 자바의 기초!  (0) 2019.05.09
[#1] 자바의 첫걸음!  (0) 2019.05.09
Comments