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) -> 결과값에 대응하는 유니코드 문자로 출력