문자

대부분의 경우 단일 문자 값을 사용하는 경우 기본 char 타입을 사용합니다. 예를 들어

char ch = 'a'; 
// Unicode for uppercase Greek omega character
char uniChar = '\u03A9';
// an array of chars
char[] charArray = { 'a', 'b', 'c', 'd', 'e' };

그러나 ‘문자’를 객체로 사용해야 하는 경우가 있습니다. -예를 들어, 객체가 예상되는 메서드 인자로 사용해야 하는 경우입니다. Java 프로그래밍 언어는 이러한 목적으로 charCharacter 객체로 “래핑”하는 래퍼 클래스를 제공합니다. 타입 Character의 객체는 타입이 char인 단일 필드를 포함합니다. 이 Character 클래스는 문자를 조작하는 데 유용한 여러 클래스(즉, static) 메서드도 제공합니다.

Character 생성자를 사용하여 Character 객체를 생성할 수 있습니다:

Character ch = new Character('a');

Java 컴파일러는 경우에 따라 Character 객체를 생성하기도 합니다. 예를 들어, 객체를 기대하는 메서드에 원시 char를 전달하면 컴파일러가 자동으로 charCharacter로 변환합니다. 이 기능을 autoboxing 또는 변환이 다른 방향으로 진행되는 경우 unboxing 이라고 합니다. 오토박싱 및 언박싱에 대한 자세한 내용은 오토박싱 및 언박싱 섹션을 참조하세요.

Note: Character 클래스는 불변이므로 일단 생성된 Character 객체는 변경할 수 없습니다.

다음 표에는 Character 클래스에서 가장 유용한 메서드 몇 가지가 나열되어 있지만 모든 메서드가 나열되어 있지는 않습니다. 이 클래스의 모든 메서드(50개 이상)에 대한 전체 목록은 Character API 명세서를 참조하세요.

 

문자 및 코드 포인트

Java 플랫폼은 JDK 1.0.2부터 유니코드 표준을 지원했습니다. Java SE 15는 유니코드 13.0을 지원합니다. char 데이터 타입과 Character 클래스는 문자를 고정 폭 16비트 엔티티로 정의한 원래의 유니코드 사양을 기반으로 합니다. 이후 유니코드 표준은 16비트 이상의 표현이 필요한 문자를 허용하도록 변경되었습니다. 이제 합법적인 코드 포인트의 범위는 유니코드 스칼라 값으로 알려진 U+0000에서 U+10FFFF입니다.

char 값은 16비트로 인코딩됩니다. 따라서 0x0000부터 0xFFFF까지의 숫자를 나타낼 수 있습니다. 이 문자 집합을 기본 다국어 평면 (Basic Multilingual Plane : BMP) 이라고도 합니다. 코드 포인트가 0xFFFF보다 큰 문자(U+FFFF라고 표시)를 보조 문자(supplementary characters) 라고 합니다.

따라서 char 값은 기본 다국어 평면(BMP) 코드 포인트를 나타냅니다. int 값은 보조 코드 포인트를 포함한 모든 유니코드 코드 포인트를 나타냅니다. 달리 명시되지 않는 한, 보조 문자 및 대리 문자 값에 대한 동작은 다음과 같습니다:

  • char 값만 허용하는 메서드는 보조 문자를 지원할 수 없습니다. 이들은 대리 범위의 char 값을 정의되지 않은 문자로 취급합니다.
  • int 값을 허용하는 메서드는 보조 문자를 포함한 모든 유니코드 문자를 지원합니다.

자세한 내용은 Character 클래스 설명서를 참조하세요.

 

이스케이프 시퀀스

백슬래시(\) 앞에 오는 문자는 이스케이프 시퀀스이며 컴파일러에 특별한 의미를 갖습니다. 다음 표는 Java 이스케이프 시퀀스를 보여줍니다:

Escape SequenceDescription
\t이 지점에서 텍스트에 탭을 삽입합니다.
\b이 지점에서 텍스트에 백스페이스를 삽입합니다.
\n이 지점에서 텍스트에 줄을 삽입합니다.
\r이 지점에서 텍스트에 캐리지 리턴을 삽입합니다.
\f이 지점에서 텍스트에 양식 피드를 삽입합니다.
\'이 지점에서 텍스트에 작은따옴표를 삽입합니다.
\"이 지점에서 텍스트에 큰따옴표 문자를 삽입합니다.
\\이 지점에서 텍스트에 백슬래시 문자를 삽입합니다.

인쇄 문에서 이스케이프 시퀀스가 발견되면 컴파일러는 그에 따라 해석합니다. 예를 들어 따옴표 안에 따옴표를 넣으려면 안쪽 따옴표에 이스케이프 시퀀스 \” 를 사용해야 합니다. 문장을 인쇄하려면 다음과 같이 하세요.

She said "Hello!" to me.

다음과 같이 작성합니다.

System.out.println("She said \"Hello!\" to me.");