ZetCode

Java Character 类

最后修改时间:2025 年 4 月 13 日

java.lang.Character 类是原始类型 char 的包装类,提供了高效分析和操作字符数据的方法。它使单个字符上的面向对象操作成为可能,从而实现分类、大小写转换和数值转换。此类在 Java 中处理文本和基于字符的操作时特别有用。

Character 类在处理 Unicode 字符(包括基本多语言平面之外的补充字符)方面起着至关重要的作用。 它确保了对国际文本和编码的正确支持,使 Java 成为处理各种语言和符号的应用程序的可靠选择。

此类提供许多用于字符分类和转换的静态方法,包括:

此外,Character 类还包括有用的常量,例如 MIN_VALUEMAX_VALUE,分别代表 char 的最小和最大可能的 Unicode 值。

通过使用 Character 类,Java 能够高效地进行文本处理、字符验证以及跨各种应用程序的转换,从而确保在不同的语言和数字环境中正确处理字符。

字符分类

Character 类提供了多种方法来确定字符的类别。 这些方法包括 isLetterisDigitisWhitespace。 这些方法对于输入验证和文本处理非常有用。

Main.java
void main() {

    char ch1 = 'A';
    char ch2 = '4';
    char ch3 = '\t';
    
    System.out.println("Is 'A' a letter? " + Character.isLetter(ch1));
    System.out.println("Is 'A' a digit? " + Character.isDigit(ch1));
    System.out.println("Is '4' a digit? " + Character.isDigit(ch2));
    System.out.println("Is '\\t' whitespace? " + Character.isWhitespace(ch3));
    System.out.println("Is 'A' lowercase? " + Character.isLowerCase(ch1));
}

此示例演示了字符分类方法。 我们测试不同的字符,以查看它们是否为字母、数字或空格。 这些方法返回布尔值,指示字符是否属于指定的类别。

大小写转换

Character 类提供了在字符的大写和小写之间进行转换的方法。 toUpperCasetoLowerCase 方法根据 Unicode 标准处理大小写转换。

Main.java
void main() {

    char lowerA = 'a';
    char upperA = 'A';
    char sigma = 'Σ'; // Greek capital letter sigma
    
    System.out.println("Uppercase of 'a': " + Character.toUpperCase(lowerA));
    System.out.println("Lowercase of 'A': " + Character.toLowerCase(upperA));
    System.out.println("Lowercase of 'Σ': " + Character.toLowerCase(sigma));
    
    // Check if characters are uppercase or lowercase
    System.out.println("Is 'A' uppercase? " + Character.isUpperCase(upperA));
    System.out.println("Is 'a' lowercase? " + Character.isLowerCase(lowerA));
}

此示例显示了大小写转换方法。 我们在大小写之间转换字符,并检查它们的大小写状态。 请注意,这些方法可以正确处理 Unicode 字符,如希腊大写字母 sigma 所示。

数字转换

Character 类可以在字符及其数值之间进行转换。 digit 方法返回指定基数中字符的数值,而 forDigit 执行反向转换。

Main.java
void main() {

    char digitChar = '7';
    char hexChar = 'A';
    int digit = 12;
    
    // Convert character to numeric value
    System.out.println("Numeric value of '7': " + Character.digit(digitChar, 10));
    System.out.println("Hex value of 'A': " + Character.digit(hexChar, 16));
    
    // Convert numeric value to character
    System.out.println("Character for 12 in radix 16: " + 
                      Character.forDigit(digit, 16));
    System.out.println("Character for 9 in radix 10: " + 
                      Character.forDigit(9, 10));
}

此示例演示了数字转换方法。 我们在不同的基数中将字符转换为它们的数值,反之亦然。 当使用不同的数字系统时,这些方法特别有用。

字符比较

Character 类提供了比较字符的方法。 compare 方法以数值方式比较两个 char 值,而 compareTo 比较两个 Character 对象。

Main.java
void main() {

    char ch1 = 'A';
    char ch2 = 'B';
    Character charObj1 = 'A';
    Character charObj2 = 'B';
    
    // Compare primitive chars
    System.out.println("Compare 'A' and 'B': " + Character.compare(ch1, ch2));
    
    // Compare Character objects
    System.out.println("Compare Character 'A' and 'B': " + 
                      charObj1.compareTo(charObj2));
    
    // Equality checks
    System.out.println("'A' equals 'A'? " + charObj1.equals('A'));
    System.out.println("'A' equals 'B'? " + charObj1.equals('B'));
}

此示例显示了比较字符的不同方法。 compare 方法返回一个负整数、零或正整数,具体取决于比较。 equals 方法检查 Character 对象和原始值之间的完全相等性。

Unicode 代码点

Character 类支持 Unicode 代码点,它可以表示 BMP(基本多语言平面)之外的字符。 像 isLettertoUpperCase 这样的方法具有补充字符的代码点变体。

Main.java
void main() {

    // A supplementary character (outside BMP)
    int codePoint = 0x1F600; // 😀 emoji
    
    System.out.println("Is 😀 a letter? " + 
                      Character.isLetter(codePoint));
    System.out.println("Is 😀 a valid code point? " + 
                      Character.isValidCodePoint(codePoint));
    System.out.println("Code point char count: " + 
                      Character.charCount(codePoint));
    
    // Convert to chars
    char[] chars = Character.toChars(codePoint);
    System.out.println("Chars for code point: " + 
                      new String(chars));
}

此示例演示了使用 Unicode 代码点。 我们检查需要两个 char 值(代理项对)来表示的补充字符(笑脸表情符号)的属性。 charCount 方法对此类字符返回 2。

字符常量

Character 类定义了几个有用的常量。 这些包括代表 char 值范围的 MIN_VALUEMAX_VALUE,以及特定 Unicode 值的常量,例如 MIN_RADIXMAX_RADIX

Main.java
void main() {

    System.out.println("Minimum char value: " + (int) Character.MIN_VALUE);
    System.out.println("Maximum char value: " + (int) Character.MAX_VALUE);
    System.out.println("Minimum radix: " + Character.MIN_RADIX);
    System.out.println("Maximum radix: " + Character.MAX_RADIX);
    
    // Unicode constants
    System.out.println("Unicode space separator: " + 
                      Character.SPACE_SEPARATOR);
    System.out.println("Unicode lowercase letter: " + 
                      Character.LOWERCASE_LETTER);
}

此示例显示了 Character 类中定义的一些重要常量。 在使用字符范围和 Unicode 类别时,这些常量非常有用。 MIN_VALUE 和 MAX_VALUE 表示 Java 中可能的 char 值的范围。

字符转义

Character 类可以帮助识别字符串中的转义序列。 虽然 Java 在编译时处理大多数转义,但 Character 方法可以检测某些上下文中可能需要转义的特殊字符。

Main.java
void main() {

    char newline = '\n';
    char tab = '\t';
    char backslash = '\\';
    
    System.out.println("Is '\\n' whitespace? " + 
                      Character.isWhitespace(newline));
    System.out.println("Is '\\t' whitespace? " + 
                      Character.isWhitespace(tab));
    System.out.println("Is '\\\\' a letter? " + 
                      Character.isLetter(backslash));
    
    // Escape sequences in strings
    System.out.println("Line 1" + newline + "Line 2");
    System.out.println("Column1" + tab + "Column2");
}

此示例演示了 Character 方法如何识别换行符和制表符等特殊字符。 虽然这些是 Java 源代码中的转义序列,但它们在运行时变为单个 char 值。 这些方法可以检测它们的特殊属性。

来源

Java Character 类文档

在本文中,我们通过实际示例介绍了 Java Character 类的基本方法。 理解这些方法对于 Java 应用程序中的正确文本处理和字符操作至关重要。

作者

我叫 Jan Bodnar,是一名专注的程序员,在该领域拥有多年的经验。 我于 2007 年开始撰写编程文章,此后撰写了 1,400 多篇文章和 8 本电子书。 凭借超过八年的教学经验,我致力于分享我的知识并帮助他人掌握编程概念。

列出所有Java教程