Search

기본형 - 문자형

문자형 - char

문자 저장을 위한 변수를 선언할 때 사용
크기 : 2 byte(16 bit)
char 타입의 변수는 하나의 문자만 저장 가능 실질적으론 문자가 아닌, 유니코드(숫자)가 저장됨.
// 문자 'B'를 char 타입 변수 ch에 저장 char ch = 'B'; // 실제론 'B'에 해당되는 유니코드 66이 저장되는 것
Java
유니코드로 직접 저장도 가능
// 두 방식 모두 동일한 데이터가 저장됨. char ch = 'B'; // 문자 'B'를 char타입 변수 ch에 저장 char ch = 66; // 'B'의 유니코드 66을 직접 변수에 저장
Java
특정 문자의 유니코드를 확인하는 방법
int code = (int)ch; // ch에 저장된 문자 값을 int형으로 변환하여 저장
Java
CharToCode.java

특수 문자 다루기

Search
특수 문자 표현법
특수 문자
문자 리터럴
backspace
Open
\b
form feed
Open
\f
new line
Open
\n
carriage return
Open
\r
역슬래시
Open
\\
작은따옴표
Open
\'
큰따옴표
Open
\"
유니코드(16진수)문자
Open
\u유니코드
char a='\u0041'
SpecialCharEx.java

char 타입의 표현 형식

char 타입의 크기는 16 bit이므로, 16자리의 2진수로 표현할 수 있는 정수를 char 타입 변수에 저장 가능
'B'660000000001000010
문자의 유니코드(정수)가 저장되고 표현형식도 정수형과 동일 단, 음수를 나타낼 필요가 없으므로 정수형 타입과는 표현 값 범위가 다름(음수 X)
16 bit로 표현 가능한 정수의 개수 : 2^16개 (65536개)
short 타입의 표현 범위 : -2^15 ~ 2^15 -1 (-32768 ~ 32767)
char 타입의 표현 범위 : 0 ~ 2^16 -1 (0 ~ 65535)
같은 2진수 값이 저장될지라도, 변수형에 따라 출력값이 다름.
char ch ='B'; // 'B' -> 66 -> 0000000001000010 short s = 66; // 66 -> 0000000001000010 System.out.println(ch); // B System.out.println(s); // 66
Java

인코딩과 디코딩(Encoding & Decoding)

문자 인코딩 : 문자를 코드로 변환 'B' → 66
문자 디코딩 : 코드를 문자로 변환 66 → 'B'
문자를 저장할 때 인코딩하여 숫자로 변환하여 저장하고, 저장된 문자를 읽어올 때는 디코딩을 해서 숫자를 원래 문자로 되돌림.
웹페이지의 문자들이 깨져서 보인다면 인코딩 설정이 잘못된 것.

유니코드 (Unicode)

세계의 모든 문자를 하나의 통합된 문자 집합으로 표현하기 위한 코드
모든 문자를 16 bit (65536 문자)로 표현하고자 했지만, 부족하여 21 bit(약 200만) 문자로 확장됨.
유니코드는 문자 셋에 따라 UTF-8, UTF-16, UTF-32 등의 유니코드 인코딩으로 나뉨.
UTF-16 : 모든 문자를 2 byte 고정크기로 표현. 자바에서 사용 문자를 다루기 편하지만, 1 byte로 표현 가능한 영어와 숫자도 2 byte로 표현하기 때문에 문서의 크기가 커지는 단점이 있음.
UTF-8 : 모든 문자를 1~4 byte의 가변크기로 표현. 영문과 숫자는 1 byte, 한글은 3byte로 표현. 문서 크기를 줄일 수 있기 때문에 전송속도가 중요한 인터넷 웹문서에서 많이 사용

참고 자료