[Java] 문자형 char 에 대한 이야기

char는 문자를 내부적으로 정수값 코드로 저장하기 때문에 정수형 ( byte, short , int ,long )과 밀접한 관계가 있다.


char는 자바에서 유니코드( 2 byte 문자 체계)를 사용하므로 2 byte.

 

C언어와 같은 프로그래밍 언어는 문자형의 경우 1 byte( ASCII코드 ) 의 크기를 갖지만,

java에서는 유니코드 (Unicode)문자 체계를 사용하기 때문에 크기가 2 byte이다.

 

 

여기서 잠깐!

 

유니코드란?


세계 각 국의 언어를 통일된 방법으로 표현할 수 있게 제안된 국제적인 코드 규약이다.

컴퓨터가 미국에서 개발되어져 영어를 바탕으로 정의되어 있다.

 

영어는 26자의 알파벳과 몇 가지 특수 문자를 표현하기에 1 byte로 충분했기 때문에

문자가 1 byte로 표현되고 있지만,

 

동양 3국의 한글, 한자 또는 일어 등과 같은 문자는 1 byte로는 표현이 불가능하기에

2 byte로 문자를 표현하는 유니코드가 만들어 졌다.

 

 



char형 변수에 문자를 저장할 때는 홀따옴표 ( ' ' )로 문자를 둘러싼다.

ex > char firstletter = ' A ' ;

 



char형 VS short형

 

크기가 모두 2 byte( 16 bit )로 표현할 수 있는 값의 개수는 65536개로 같다.

 

하지만!


 char 형

문자의 코드를 저장하므로 음수를 필요로 하지 않기 때문에 2진수로 표현했을 때 첫 번째 자리를 부호에 사용하지 않는다.

 short 형

 첫 번째 자리를 부호를 표현하는데 사용하기 때문에 서로 다른 범위를 갖는다.


만약에 어떤 문자의 유니코드를 알고 싶으면,

char형 변수를 정수형(int)으로 변환하면 된다.

 

char ch = 'A';

int code = (int ) ch;

 

변수에 문자를 저장하는 것 같지만 실제로는 정수값(유니코드)이 저장되는 것이다.

잊지말자 ! 모든 데이터는 숫자로 저장된다. !