Lớp Character là wrapper class bao gói kiểu nguyên thủy char thành đối tượng. Một đối tượng Character chứa một trường duy nhất kiểu char.
Ngoài việc wrapper, Character cung cấp nhiều phương thức static tiện ích để phân loại, chuyển đổi và thao tác trên ký tự Unicode.
Một số phương thức quan trọng
| Modifier & Type | Phương thức & Mô tả |
|---|---|
static int |
charCount(int codePoint) - Số lượng giá trị char (1 hoặc 2) cần thiết để biểu diễn code point Unicode này (liên quan surrogate pair). |
char |
charValue() - Trả về giá trị char của đối tượng Character này. |
static int |
codePointAt(char[] a, int index) - Trả về code point tại index trong mảng char. |
static int |
codePointAt(char[] a, int index, int limit) - Trả về code point tại index, chỉ dùng phần tử index < limit. |
static int |
codePointAt(CharSequence seq, int index) - Trả về code point tại index trong CharSequence. |
static int |
codePointBefore(char[] a, int index) - Trả về code point ngay trước index. |
static int |
codePointBefore(CharSequence seq, int index) - Trả về code point trước index trong CharSequence. |
static int |
codePointCount(CharSequence seq, int beginIndex, int endIndex) - Đếm số code point trong khoảng. |
static int |
compare(char x, char y) - So sánh 2 char theo giá trị số. |
static int |
compareTo(Character anotherCharacter) - So sánh 2 đối tượng Character. |
static int |
digit(char ch, int radix) - Trả về giá trị số của ký tự trong hệ cơ số radix (trả về -1 nếu không hợp lệ). |
static boolean |
isDigit(char ch) - Kiểm tra có phải chữ số không. |
static boolean |
isLetter(char ch) - Kiểm tra có phải chữ cái không. |
static boolean |
isLetterOrDigit(char ch) - Kiểm tra chữ cái hoặc chữ số. |
static boolean |
isLowerCase(char ch) - Kiểm tra chữ thường. |
static boolean |
isUpperCase(char ch) - Kiểm tra chữ hoa. |
static boolean |
isWhitespace(char ch) - Kiểm tra khoảng trắng. |
static boolean |
isDefined(int codePoint) - Kiểm tra code point có được định nghĩa trong Unicode không. |
static char |
toLowerCase(char ch) - Chuyển thành chữ thường. |
static char |
toUpperCase(char ch) - Chuyển thành chữ hoa. |
static String |
toString(char c) - Trả về String biểu diễn ký tự. |
String |
toString() - Trả về String biểu diễn đối tượng này. |
Ví dụ 1: Kiểm tra chữ cái
public class Demo {
public static void main(String[] args) {
System.out.println(Character.isLetter('0')); // false
System.out.println(Character.isLetter('h')); // true
System.out.println(Character.isLetter('K')); // true
}
}
Kết quả
false true true
Ví dụ 2: Chuyển đổi và toString
public class Demo {
public static void main(String[] args) {
System.out.println(Character.isLetter('0')); // false
System.out.println(Character.isLetter('h')); // true
System.out.println(Character.isLetter('K')); // true
System.out.println(Character.toString('0')); // "0"
System.out.println(Character.toString('H')); // "H"
// Thêm các ví dụ hữu ích khác
System.out.println(Character.isDigit('5')); // true
System.out.println(Character.isWhitespace(' ')); // true
System.out.println(Character.toLowerCase('A')); // a
System.out.println(Character.toUpperCase('z')); // Z
System.out.println(Character.digit('F', 16)); // 15 (hex)
}
}
Kết quả
false true true 0 H true true a Z 15
Làm việc với Unicode (Code Point)
Ký tự Unicode ngoài BMP (Basic Multilingual Plane) cần 2 char (surrogate pair) để biểu diễn. Dùng các phương thức codePointAt, codePointCount, charCount để xử lý đúng.
public class UnicodeDemo {
public static void main(String[] args) {
// Emoji 😀 = U+1F600 (cần 2 char: surrogate pair)
String emoji = "\uD83D\uDE00"; // hoặc "\u{1F600}" từ Java 11+
System.out.println("Length (char count): " + emoji.length()); // 2
System.out.println("Code point count: " + emoji.codePointCount(0, emoji.length())); // 1
int cp = emoji.codePointAt(0);
System.out.println("Code point: U+" + Integer.toHexString(cp).toUpperCase()); // U+1F600
System.out.println("Char count needed: " + Character.charCount(cp)); // 2
// Duyệt đúng cách theo code point
emoji.codePoints().forEach(cp2 ->
System.out.println("Char: " + Character.toString(cp2) + ", Category: " + Character.getType(cp2))
);
}
}
Kết quả
Length (char count): 2 Code point count: 1 Code point: U+1F600 Char count needed: 2 Char: 😀, Category: 5
Lưu ý
- Luôn ưu tiên dùng
codePointAPI khi xử lý Unicode thực tế (emoji, chữ Hán, tiếng Việt...). char trong Java là UTF-16 code unit (16-bit), không phải Unicode code point.- Phương thức
isLetter,isDigit... có overload nhậnint codePointcho Unicode đầy đủ.