Phương thức Character.charCount() xác định số giá trị char cần thiết để biểu diễn ký tự chỉ định (Unicode code point). Nếu ký tự lớn hơn hoặc bằng 0x10000, trả về 2 (surrogate pair). Ngược lại trả về 1 (BMP - Basic Multilingual Plane).
Ví dụ 1
import java.lang.*;
public class Demo {
public static void main(String[] args) {
int cp = 0x12345; // 74565 decimal - supplementary character
int res = Character.charCount(cp);
String str1 = "Không phải supplementary character hợp lệ";
String str2 = "Là supplementary character hợp lệ";
if (res == 1) {
System.out.println(str1);
} else if (res == 2) {
System.out.println(str2);
}
}
}
Kết quả
Là supplementary character hợp lệ
Ví dụ 2
import java.lang.*;
public class Demo {
public static void main(String[] args) {
int c = 0x11987; // 72071 decimal
int res = Character.charCount(c);
System.out.println(res);
}
}
Kết quả
2
Bối cảnh: Java dùng UTF-16. Ký tự trong BMP (U+0000 đến U+FFFF) dùng 1 char (16-bit). Ký tự supplementary (U+10000 đến U+10FFFF) dùng 2 char (surrogate pair: high surrogate + low surrogate). charCount() giúp tính độ dài thực của chuỗi khi xử lý low-level.