Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Java

Lớp Character trong Java

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 codePoint API 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ận int codePoint cho Unicode đầy đủ.