char은 문자를 저장하는 자료형으로, 문자를 작은따옴표(")안에 표기한다. char 자료형은 정수를 저장할수도 있지만, 앞에서 배운 정수 자료형 4가지와 다소 차이가 있다.
A라는 문자를 char 자료형에 저장하기 위해 코드를 char = 'A'와 같이 작성했다면 메모리에는 변수 a의 공간이 만들어지고, 그 안에 문자가 들어가야 할 것이다. 하지만 메모리에는 문자를 기록할 수 없다. 메모리는 2진수 값만 저장할 수 있기 때문이다.
그렇다면 문자를 어떻게 저장할까? 바로 모든 문자를 특정 정숫값으로 바꿔 저장하는 것이다. 자바는 세상의 모든 문자에 정숫값을 매겨 놓은 표를 사용하는데, 이를 '유니코드unicode 표'라고 한다. 즉 문자를 저장할 때는 이 유니코드 표를 보고 그 문자에 해당하는 정수로 바꿔 메모리에 저장한다. 이 와 반대로 문자를 읽을 때는 정수를 읽어 와서 그 정수에 해당하는 문자를 출력한다.
char 자료형 메모리 안은 문자가 아니라 정수가 저장된 형태이므로 char에 문자에 해당하는 정숫값을 직접 입력해도 똑같은 결과를 얻을 수 있다. 이것이 바로 char 자료형에 정수를 저장할 수 있는 이유다.
char 자료형도 다른 자료형과 마찬가지로 정숫값을 입력할 때 다양한 진법(10진수, 16진수)으로 입력할 수 있다.진법은 정숫값을 표현하는 방식에서만 차이가 나기 때문이다. 어차피 최종 메모리에는 2진수의 값이 저장될 것이다. char 자료형은 정수값과 더불어 유니코드 값을 직접 입력할 수도 있다. 유니코드를 입력할 때는 '\u+16진수 유니코드'와 같이 사용하며, 여기에서 유니코드는 저장하고자 하는 문자의 유니코드값을 의미한다.
문자 'A'를 저장하는 다양한 방법
자바에서는 정수를 다양한 진법으로 표현할 수 있도록 지원한다. 단, 진법마다 숫자의 표현 방식이 다르다.
10진수 : 숫자(ex int a = 11 -> 10진수 11)
2진수 : 0b + 숫자(ex int b = 0b11 -> 10진수 3)
8진수 : 0 + 숫자(int c = 011 -> 10진수 9)
16진수 : 0x + 숫자(int d = 0x 11 -> 10진수 17)
진법 변환 방법
결과