Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java Character.charCount() 메서드 완벽 정리 – 예제 코드와 함께 배우기

Character.charCount() 메서드란?

Java의 Character.charCount() 메서드는 지정된 문자(유니코드 코드 포인트)를 표현하는 데 필요한 char 값의 개수를 반환합니다. 동작 방식은 다음과 같습니다.

  • 지정된 문자가 0x10000 이상이면 2를 반환합니다. 이는 해당 문자가 보충 문자(supplementary character) 영역에 속한다는 의미입니다.
  • 그 외의 경우에는 1을 반환합니다. 즉, 기본 다국어 평면(BMP, Basic Multilingual Plane)에 속하는 일반적인 문자입니다.

참고로 자바에서 char 타입은 16비트(UTF-16 코드 유닛)이므로, 0x10000 이상의 확장 유니코드 문자 하나를 표현하려면 서로게이트 페어(surrogate pair) 형태로 char 두 개가 필요합니다. charCount() 메서드는 바로 이 개수를 판별할 때 유용하게 사용됩니다.

예제 1: 보충 문자 여부 판별하기

아래 예제에서는 코드 포인트 0x12345에 대해 charCount()를 호출하여 결과를 확인합니다.

import java.lang.*;
public class Demo {
    public static void main(String[] args) {
        // int 코드 포인트 cp 생성 및 값 할당
        int cp = 0x12345;
        // int 변수 res 선언
        int res;
        // cp에 대한 charCount 결과를 res에 저장
        res = Character.charCount(cp);
        String str1 = "보충 문자(supplementary character)가 아닙니다";
        String str2 = "유효한 보충 문자(supplementary character)입니다";
        // res 값 출력
        if (res == 1) {
            System.out.println(str1);
        } else if (res == 2) {
            System.out.println(str2);
        }
    }
}

실행 결과

유효한 보충 문자(supplementary character)입니다

0x12345는 0x10000보다 크기 때문에 char 두 개가 필요하며, 따라서 charCount()는 2를 반환합니다.

예제 2: 반환값 직접 출력하기

이번에는 다른 코드 포인트를 사용해 반환값을 그대로 출력해 보겠습니다.

import java.lang.*;
public class Demo {
    public static void main(String[] args) {
        int c = 0x11987;
        int res = Character.charCount(c);
        System.out.println(res);
    }
}

실행 결과

2

0x11987 역시 0x10000을 초과하는 코드 포인트이므로 결과값으로 2가 출력되는 것을 확인할 수 있습니다.

정리

Character.charCount() 메서드는 유니코드 코드 포인트가 몇 개의 char 값으로 구성되는지 빠르게 확인할 수 있는 간단하지만 실용적인 도구입니다. 특히 문자열을 직접 순회하거나 UTF-16 인코딩 관련 로직을 작성할 때 보충 문자 처리에 활용하면 유용합니다.