자바에서 문자를 다룰 때 기본적으로 char라는 원시 데이터 타입을 사용합니다. 하지만 객체지향 프로그래밍의 특성상 객체 형태로 문자를 처리해야 하는 경우가 많습니다. 이를 위해 자바는 char 타입을 래핑하는 Character 클래스를 제공합니다.
Character 클래스란?
기본 자료형인 char 대신 객체로 취급이 필요한 상황에서는 Character 클래스를 사용할 수 있습니다. 이 클래스는 java.lang 패키지에 포함되어 있으며, 문자 관련 다양한 유틸리티 메서드를 제공합니다.
다음은 기본적인 char 변수 선언 예제입니다:
char letter = 'B';
char symbol = '\u00A9'; // © 기호의 유니코드
char[] letters = {'j', 'a', 'v', 'a'};
객체로 사용하기 위해선 다음과 같이 Character 인스턴스를 생성할 수 있습니다:
Character chObj = new Character('B');
하지만 자바 5부터 도입된 오토박싱(autoboxing) 기능 덕분에 개발자는 명시적인 객체 생성 없이도 자연스럽게 원시형과 래퍼 클래스 간 변환을 사용할 수 있습니다.
오토박싱과 언박싱
자바 컴파일러는 필요 시 자동으로 char 값을 Character 객체로 변환하거나 그 반대로 처리합니다.
// 오토박싱: char 값이 자동으로 Character 객체로 변환됨
Character wrappedChar = 'k';
// 언박싱: Character 객체가 자동으로 char 값으로 변환됨
public char convertToLowerCase(Character input) {
return Character.toLowerCase(input);
}
char result = convertToLowerCase('M'); // 'm' 반환
이스케이프 시퀀스
문자열 내에서 특수한 의미를 갖는 문자들은 백슬래시(\)와 함께 사용되는 이스케이프 시퀀스로 표현됩니다. 대표적인 예는 다음과 같습니다:
| 시퀀스 | 설명 |
|---|---|
| \t | 탭 삽입 |
| \b | 백스페이스 (한 글자 삭제) |
| \n | 줄바꿈 |
| \r | 캐리지 리턴 |
| \f | 폼 피드 (페이지 넘김) |
| \' | 작은따옴표 출력 |
| \" | 큰따옴표 출력 |
| \\ | 역슬래시 자체 출력 |
예를 들어 큰따옴표를 포함한 문장을 출력하려면:
System.out.println("He whispered, \"I am ready.\"");
출력 결과:
He whispered, "I am ready."
주요 정적 메서드 활용
Character 클래스는 문자의 속성을 판단하거나 변환하는 다양한 정적 메서드를 제공합니다:
isLetter(char c): 알파벳 여부 확인isDigit(char c): 숫자 문자인지 확인isWhitespace(char c): 공백 문자인지 확인isUpperCase(char c): 대문자인지 확인isLowerCase(char c): 소문자인지 확인toUpperCase(char c): 해당 문자를 대문자로 변환toLowerCase(char c): 해당 문자를 소문자로 변환toString(): 문자를 길이 1인 문자열로 반환
실습 예제
다음 코드는 특정 문자가 어떤 성질을 가지는지 검사합니다:
public class CharCheck {
public static void main(String[] args) {
char target = '7';
System.out.println(Character.isLetter(target)); // false
System.out.println(Character.isDigit(target)); // true
System.out.println(Character.isUpperCase(target)); // false
}
}
결과 출력:
false true false
이처럼 Character 클래스는 문자 분석 및 변환 작업에서 매우 유용하며, 파서, 입력 검증, 텍스트 처리 애플리케이션 등에서 널리 사용됩니다. 전체 메서드 목록은 공식 Java API 문서에서 java.lang.Character 항목을 참고하시기 바랍니다.