기초 다지기
목차
변수란?
변수(Variable)은 수학에서 익히 들었을 표현이다. 흔히 ‘변하는 숫자’라는 뜻이라고 설명하는데, 프로그래밍에서의 변수 역시 같은 성질을 가지고 있다. 변수는 값이 변할 수 있고 상징적 이름이기 때문에 프로그래머가 마음대로 지을 수 있다. 단, 몇가지 규칙이 존재해 이를 준수해야한다.
//변수를 선언하는 방법이다. 이름은 임의로 지을 수 있다.
int first;
double second;
String third;
//단, 아래 경우에는 변수명으로 사용 불가하다.
int 1st; //변수는 숫자로 시작할 수 없다.
double *; //_와 $ 이외의 특수문자는 사용할 수 없다.
String class; //Java의 키워드는 사용할 수 없다.
위의 3가지 규칙에 해당되는 이름을 제외하면 어떤 이름이든 변수명으로 사용할 수 있다. 그러나 마음대로 지을 수 있다고 해서 모든 변수명이 ‘좋은’ 변수명은 아닐 것이다. 그렇다면 좋은 변수명은 무엇일까? 사람들의 키의 총합을 구하는 프로그램을 만든다고 가정하자. 이때 총합을 저장하는 변수의 이름으로 어떤 것이 더 좋은가?
int a;
int heightSum;
이 프로그램을 작성한 프로그래머 입장에서는 두 변수 모두 키의 총합을 저장하는 변수라는 것을 알 수 있을 것이다. 그러나 시간이 흐르고 다른 프로그래머가 이 프로그램을 유지 보수 할 때, 변수 ‘a’가 무엇을 저장하는 변수인지 한 눈에 알아볼 수 있을까? 반면에 변수 ‘heightSum’은 키의 총합이라는 것을 알아보기 쉽다! 즉, 변수는 짧지만 의미가 포함되어 있어야 한다.
물론, 추후에 정리할 반복문에서 사용하는 반복 변수나 임시로 사용하는 변수는 간단한 이름을 지어도 무방하다. 그러나 계속해서 사용하거나 중요한 변수는 의미를 포함해서 짓는 것이 좋다. 또한, 변수명 규칙 중 _와 $ 문자는 사용 가능하다고 했지만, 변수명 제일 앞에는 사용하지 않는다.
자료형이란?
우리는 이제 여러 변수를 선언할 수 있게 되었다. 변수를 선언할 때, 항상 이름 앞에 int나 String 같은 단어들이 있었다. 이 단어들이 바로 자료형(Type)이다.
String myName; //String 자료형 변수
int myAge; //int형 변수
변수에는 값을 대입할 수 있는데, 지정한 자료형과 정확히 일치하는 값들만 대입할 수 있다.
String myName = "Java"; //문자열 대입
int myAge = 29; //정수 대입
만약 잘못된 값을 대입하면 컴파일 과정에서 다음과 같은 오류 메시지가 나타난다.
int myAge = "How old are you?"
> Type mismatch: cannot convert from String to int
Java에는 정말 다양한 자료형들이 있고, 심지어는 사용자 정의 자료형도 만들 수 있다. 자세한 내용은 다음 장에서 정리하겠다.
주석
Java에는 두 가지 형태의 주석이 있다. 눈치챘을지 모르겠지만 주석은 이미 여러번 사용했다. 주석은 주로 설명이 필요한 부분에 작성해 코드를 읽는 다른 프로그래머들에게 도움을 주는 역할을 한다. 다시 말해, 누구나 알아볼 수 있는 코드에 주석을 마구 작성하는 것은 별로 좋지 못한 방법이다.
//이 주석은 라인 주석이다. 한 줄만 가능하다.
/*
이 주석은 블록 주석이다.
여러 줄을 작성할 수 있다.
*/
주석이 없는 코드가 좋은 코드라는 말을 들어본 적이 있을 것이다. 이는 오해가 다소 있는 말인데, ‘주석이 필요 없을 정도로 정돈되어 있고 이해하기 쉬운 명확한 코드’가 좋은 코드라는 것이다. 매우 복잡하고 꼬여 있는 ‘스파게티 코드’에 주석마저 없다면, 다른 프로그래머들은 유지 보수는 커녕 읽는 것조차 포기해버릴 것이다. 정말 완벽하게 좋은 코드를 작성할 수 있는 실력이 아니라면 주석은 활용하는 편이 좋다. 누군가 내 코드를 리뷰해주기 쉽기 때문에.