2.3.6 문자 자료형

jh·2022년 1월 6일

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)

진법 변환 방법

실습


결과

profile
코딩 공부 중...

0개의 댓글