character.gettype(char)返回unicode通用类别对应的int常量(如character.lowercase_letter),涵盖30余种分类,比isxxx()方法粒度更细,可用于精准字符类型判断。

Character.getType(char) 返回的是一个 int 类型的常量,对应 Unicode 中定义的 General Category(通用类别),但注意:它返回的不是枚举或字符串,而是 Character.* 开头的静态常量(如 Character.LOWERCASE_LETTER)。
理解返回值含义
这个方法把字符映射到 Unicode General Category 的 30 多个分类之一,例如:
-
Character.UPPERCASE_LETTER(如 'A') -
Character.LOWERCASE_LETTER(如 'a') -
Character.DECIMAL_DIGIT_NUMBER(如 '5') -
Character.SPACE_SEPARATOR(如 ' '、'\u3000') -
Character.OTHER_PUNCTUATION(如 '!'、'。') -
Character.CONTROL(如 '\n'、'\r')
常用判断写法
通常用 switch 或 if-else 判断返回值:
char c = '7';
int type = Character.getType(c);
switch (type) {
case Character.DECIMAL_DIGIT_NUMBER:
System.out.println("数字");
break;
case Character.UPPERCASE_LETTER:
System.out.println("大写字母");
break;
case Character.LOWERCASE_LETTER:
System.out.println("小写字母");
break;
case Character.SPACE_SEPARATOR:
System.out.println("空格类分隔符");
break;
default:
System.out.println("其他类型: " + type);
}
和 isXXX() 方法的区别
Character.getType() 比 Character.isLetter()、Character.isDigit() 等更细粒度:
-
isLetter('α')返回true(希腊字母),而getType('α')返回Character.LOWERCASE_LETTER -
isSpaceChar('\u3000')返回false(全角空格不属于isSpaceChar范围),但getType('\u3000')返回Character.SPACE_SEPARATOR - 某些符号(如 '①')
isDigit()为false,但getType()是Character.OTHER_NUMBER
查表与调试技巧
如果不确定某个字符的类型,可以:
- 直接打印:
System.out.println(Character.getType('€'));→ 输出26(即Character.CURRENCY_SYMBOL) - 对照 JDK 文档中
Character类的常量说明,或访问 官方 API 文档 查看完整常量列表 - 用
Character.toString(type)无法转换,需自己维护常量名映射(如 switch 中返回字符串)
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











