튜토리얼 (2-1)은 정수형 변수가 내용이었다.
공통적으로 변수의 작명(이름짓기)에 대한 내용을 먼저 해야 할 것 같다.
어떤 프로그래밍 언어이건 간에 보통 변수 이름은 제약이 있다.
소스코드를 편집하기 위해 이클립스를 열어보자.
이클립스를 열고 프로젝트 -> 패키지 -> 클래스 까지 만드는 부분은 이제 능숙할 것이라 믿는다.
이클립스를 열고 자바클래스파일을 작성하려는 시점에 이미 자바에서(컴파일러가)
사용중인 단어들이 있다. 이를 예약어라고 한다. (reserved word) Java Keywords라고도 한다.
https://www.w3schools.com/java/java_ref_keywords.asp
www.w3schools.com은 매우 좋은 온라인 참고서로 쓸 수 있을 것이다. Java Keyword를 보면 약 50여개의 키워드가 등록되어 있다. 이들은 소스코드를 작성하는 시점에서 이미 자바가 사용하고 있는 식별자이다. (identifier) 자바를 끝까지 공부해 나가면 이 50개의 키워드들을 하나씩 하나씩 다 배우게 된다.
나중에 알게 되겠지만 Keywords를 보면 그 언어의 특성이 담겨 있다. byte, short, int 등의 자료형이 있고, if, for 같은 제어와 루프를 담당하는 키워드도 예약되어 있고 객체지향의 정점인 Java 답게 class 관련 키워드들 이 많이 있다.
이들은 변수이름이나 다른 사용자 식별자로는 사용이 불가능한 것이다. 이미 단어의 용도가 정해져서 컴파일러에 등록이 되있다고 생각하면 된다.
그래서 아래와 같은 작명 규칙이 있다.
1. 약 50개의 자바가 미리 등록한 예약어(reserved words)는 사용이 불가능하다.
2. 영문자와 숫자를 사용해서 만든다. (대소문자는 다른 것으로 취급, Case sensitive 하다)
3. 특수문자는 $ 와 _ 만 사용가능하다.
4. 변수 이름은 숫자로 시작이 안된다.
변수 이름을 지을 때는 나름의 규칙이 있다. numberOfCar 같이 쓰면 camel notation(낙타 표기법)이라고 한다.
그 소스코드를 다른 사람이 읽었을 때도 내용을 알 수 있어야 여러 사람이 같이 작업하기가 좋다.
변수이름에 대해서는 사람마다 쓰는 방식에 차이가 있을 수 있다. 언어간에도 차이가 난다. 이게 어떻게 보면 자신만의 시그니쳐 같은 것으로 생각하는 프로그래머가 있을 수 있기 때문에... 큰 회사의 프로젝트는 여러사람이 진행하다 보니 표준화된 규칙이 필요하다. 자바의 기본 작명 규칙을 지키지 않으면 syntax error가 나니깐 당연히 지켜야 된다. 작명 규칙은 프로젝트의 목적에 따라 팀에서 운영하면 된다.
자바의 문자형 변수는... 2byte 이며 char 키워드를 사용한다. 지난 시간에 설명했지만 사실 CPU는 0과1밖에 모른다고 했다. 그렇다. 정말 0과 1밖에 모르는 것이다. 문자형이라함은 지금 쓰고 있는 이 한글이라던가 영어 일본어 중국어가 되는데 그런 복잡한 인간의 언어를 CPU는 그대로 이해할 수가 없다.
따라서 컴퓨터가 알고 있는 숫자와 문자를 대응 시킨다. 여기서 인코딩과 디코딩이 나온다. 숫자를 사용하려면 인코딩(encoding)을 하고 문자로 변환하려면 디코딩(decoding)을 시킨다.
char character1= 'A';
이것은 2byte의 문자형 변수 character1를 선언하고 문자 A를 저장한 것이다 (인코딩) 실제로는 A의 값인 65가 저장된다. 그리고 다시 char형을 사용해야 할 때는 A로 디코딩 된다. 아래 예제로 확인해보자.
실행결과 A가 콘솔창에 출력된다. character1 에 저장된 숫자는 65지만 A가 잘 출력된다. char 형을 출력시에 대응되는 문자를 출력하기로 되어 있기 때문이다.
https://namu.wiki/w/%EC%95%84%EC%8A%A4%ED%82%A4%20%EC%BD%94%EB%93%9C
자바의 char형은 utf-8같이 유니코드로 문자를 표현한다. 다만 앞의 1바이트 영역은 아스키 코드 호환이다. 원래부터 ascii code 가 미국의 영어체계를 중심으로 만들어졌기 때문에 프로그래머들에겐 영문이 더 편할 때도 있다. 물론 자바에서도 한글은 완벽히 사용할 수 있다.
'김' 이라는 글자이며 8,9줄의 출력은 아래와 같다.
'김'이라는 글자를 int형 변환하면 44608 이 된다. 이렇듯 한글도 숫자값이 다 대응되는 것이다.
character1 += 1;
이렇게 문자에 연산을 시킬 수도 있다. 유니코드로 '김' 다음 글자가 나오게 된다.
\u 형식을 사용하여 16진수 유니코드값을 할당할 수도 있다. 결과는 아래와 같다.
문자형을 잘 배우면 나중에 문자열(String class)이 나왔을때 이해가 빠르다.
문자형은 인코딩하여 숫자로 저장되지만 디코딩을 통해서 문자로 변환된다.
문자로 변환시키는 이유는 간단하다. 우리 사람이 보고 이해하기 위해서 이다.
보통 사람들은 숫자 65를 보고 문자 'A' 를 떠올리진 않는다.
자바에는 문자를 다루는 클래스와 메서드들이 많이 있다. 그만큼 문자를 다루는 것은 중요하다.
하루에 다 배울 수 없을 것이니 마음을 여유롭게 하고 하나씩 배우려는 자세가 필요하다.