Programming 기초/Java
[Java] 문자(char 타입)의 변환
뭉제
2023. 2. 14. 12:00
목차
1. 자동 타입 변환
2. 강제 타입 변환
자바에서 문자는 유니코드로 변환되어 저장된다.
유니코드(unicode)
· 한 문자를 2byte(16bit)로 하여 전 세계의 모든 문자를 표현할 수 있도록 만든 산업 표준 코드체계
유니코드는 2^16=655536 개의 문자를 표현할 수 있으며 각 문자에 대해 코드값을 부여한다. 그중 0~127은 아스키코드와 동일한 의미를 갖고 있다.
ex) 10진법 65는 아스키 코드와 유니코드 모두 'A'
char 타입은 유니코드를 저장할 수 있도록 2byte의 메모리 크기를 가지지만, 데이터 표현 범위는 0~65535이므로 음수가 저장될 수 없다.
char 타입에 저장할 수 있는 방법으로 작은따옴표, 10진수, 16진수가 있다.
// 문자 'A'
char c1='A'; //문자
char c2=65; //10진수
char c3='\u0041'; //16진수
자동 타입 변환
· char 타입 -> int 타입
· 유니코드 값(정수)으로 저장
char c='A';
int n=c; //char->int
System.out.println(n); //65
· c가 int 타입으로 변환 -> n에는 'A'의 유니코드 값인 65 저장
강제 타입 변환
· 음수를 저장할 수 있는 타입은 char 타입으로 자동 변환 불가
byte b=65;
// char c2=b; 오류 발생
char c2=(char)b; //byte -> char
System.out.println(c2); //'A'
· b를 char 타입으로 강제 변환 -> 유니코드 값이 65인 문자 'A' 출력
** char 타입은 정수와 연산 가능
char c='A';
int n=1;
int s=c+n;
char r=(char)s;
System.out.println(s); //66
System.out.println(r); //'B'
· c는 int 타입으로 변환(char -> int)
· 연산 결과를 char 타입으로 강제 변환(int -> char) -> 결과값에 대응하는 유니코드 문자로 출력