※ 본 포스팅은 생활코딩 이고잉님의 강의를 공부한 후 개인적인 학습목적으로 작성하였습니다. 생활코딩에서 더 자세하고 정확한 정보를 얻으시려는 분들은 아래 참고자료를 확인해주세요. ※
변수의 정의
이번 시간에는 정말 중요하고 쓸모가 많은 기능인 ‘변수’를 살펴보겠습니다. Java Class를 하나 만들고, Name에는 변수를 뜻하는 ‘Variable’을 입력하고, main 체크박스를 체크한 다음 Finish 버튼을 클릭합니다. 수학에서는 문자를 변수라고 합니다. 다음과 같이 말이죠. a = 1; 그런데, 자바에서는 이렇게 변수를 설정하면 오류가 납니다. 왜냐하면 변수를 만들 때 변수에 들어갈 데이터타입을 정해줘야하기 때문입니다. 우리가 1을 전에는 Number라고 했는데요. a는 지금 정확하게는 integer라고 정의할 겁니다. integer는 정수를 의미합니다. 여러분 자연수 Number는 1, 2, 3, … 에 해당하는 숫자들입니다. 반면에 정수는 -3, -2, -1, 0, 1, 2, 3, … 인 정수입니다. 그래서 여러분이 앞에 integer를 의미하는 int를 붙이면 변수가 성공적으로 작동하게 됩니다. int a = 1; 이렇게 말이죠.
이렇게 작성하면 정상적으로 작동하는 것을 확인할 수 있습니다. 그런데 우리는 숫자를 저런 정수 말고 소수점이 있는 숫자들도 사용을 합니다.
만약에 int b = 1.1; 이라고 하면 밑줄이 쳐집니다. 문제가 있다는 뜻이죠. b라고 하는 변수에는 integer 정수가 올 수 있다고 했는데, 1.1은 정수가 아닙니다. 이런것을 real number 실수라고 합니다. 실수는 무한히 많습니다. java에서 실수는 double이라고 합니다. 그래서 위와 같이 double b 라고 데이터 형식이 실수인 b를 정의해주면 정상적으로 작동하는 것을 알 수 있습니다.
문자를 변수에 담아볼까요? 문자는 String입니다. 그런데, 왜 Java와 같은 언어는 데이터형식을 일일이 변수에 지정하도록 했을까요? 그것은 Trade off 라는 개념과 관련이 있는데요. 다음 그림과 함께 설명을 해드리겠습니다.
길에 이 두가지가 있다고 한다면, 왼쪽에 있는 컵을 마실 수 있을까요? 하지만 오른쪽에 있는 음료수는 누가 뜯은 흔적이 없다면 우리는 의심없이 마실 수 있을 겁니다. 즉, 자바와 같은 오른쪽에 있는 음료수의 용기와 같습니다. 이 변수에는 반드시 정수가 온다, 혹은 문자열이 온다고 정의를 해두면, 그것이 아닌 정보가 들어올 때 아예 컴파일이 되지 않습니다. 그렇다는 얘기는 변수 안에 정보가 있다면 반드시 그안에 들어있는 데이터가 변수의 데이터 형식과 맞다고 확신할 수 있다는 겁니다. 그래서 꺼낼 때마다 이것이 정수인지, 실수인지 확인하지 않아도 된다는 굉장히 편리한 기능을 제공한다는 겁니다. 바론 이러한 이유 때문에 자바와 같은 컴퓨터 언어는 변수의 데이터타입을 지정하는 겁니다. 이렇게 생각하니까 굉장히 좋은 기능이라는 생각이 들죠? 이번 시간은 여기까지 하겠습니다.
변수의 효용
이번 수업에서는 변수의 효용을 따져보는 시간을 갖겠습니다. 우리가 편지를 쓴다고 가정해보겠습니다.
그런데, 이 편지에서 만약 이름을 바꾸고 싶다면, 편지에 이름이 쓰인 곳을 일일이 교체해주어야 하는 비효율이 발생을 합니다. 이럴 때 우리는 변수를 아주 효율적으로 사용할 수 있습니다.
이렇게 말이죠. 이런식으로 변수를 사용하는 것에는 두 가지 폭발적인 효과가 있습니다. 첫 번째, name 변수의 값을 바꾸어주면 변수가 사용된 모든 곳의 값이 바뀌는 폭발적인 효과를 갖게 됩니다. 두 번째, 변수를 사용하지 않았던 기존 코드에서는 “egoing”이라는 값이 어떤 취지로 사용된 데이터인지 파악하기가 쉽지 않았습니다. 그런데, “egoing”이라는 문자열 대신 name 변수를 사용하게 되면서 변수의 이름을 통해 이 문자열에는 이름이 들어간다는 것을 추론할 수 있습니다. 예를 들어서, System.out.println(10); 이라는 코드에서 10이라는 숫자의 의미를 저를 제외한 다른 사람이 파악할 수 있을까요? 없습니다. 그런데, double 형 변수에다 부가가치세를 뜻하는 VAT(value-added tax)라는 이름으로 변수를 만들고 10이라는 값을 담으면 이 코드를 보는 사람이 10의 의미가 부가가치세의 세율을 나타내는 것이라고 파악할 수 있습니다. 다음과 같이 말이죠.
코딩을 할 때 작성하는 코드는 내가 보는 코드이자 미래의 내가 보는 코드이고, 내가 아닌 다른 사람이 보는 코드이기 때문에 코드를 봤을 때 그 코드의 의미를 빨리 파악할 수 있도록 작성하는 것은 정말 정말 중요한 일입니다. 그 어떤 일보다 중요한 일이라는 것을 기억하시고 그때 사용하는 가장 중요한 수단 중 하나가 변수이고, 변수는 값에 이름을 부여하는 것이며, 좋은 이름을 써야 한다는 점을 꼭 기억하시길 바랍니다.
참고자료 및 원본 : 오픈튜토리얼스 생활코딩 (이고잉 님)
- 생활코딩 JAVA 입문 수업 : https://opentutorials.org/course/3930
'[생활코딩] Server > JAVA1(기초)' 카테고리의 다른 글
생활코딩 JAVA 1_IoT 프로그램 만들기 (0) | 2023.04.28 |
---|---|
생활코딩 JAVA 1_프로그래밍이란 무엇인가? (0) | 2023.04.28 |
생활코딩 JAVA 1_안드로이드 애플리케이션 만들기 (0) | 2023.04.28 |
생활코딩 JAVA 1_데이터 {타입, 연산, 표현, 다루기, 변환} (0) | 2023.04.28 |
생활코딩 JAVA 1_사물을 자바로 제어하기 (0) | 2023.04.27 |