Java 教程是为 JDK 8 编写的。本页中描述的示例和实践未利用在后续版本中引入的改进。
你可以根据字符的属性对字符进行分类。例如,X 是大写字母,4 是十进制数字。检查字符属性是验证终端用户输入的数据的常用方法。例如,如果你在线销售图书,你的订单输入屏幕应验证数量字段中的字符是否都是数字。
不习惯编写全局软件的开发人员可以通过将字符与字符常量进行比较来确定字符的属性。例如,他们可能会编写如下代码:
char ch;
//...
// This code is WRONG!
// check if ch is a letter
if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z'))
// ...
// check if ch is a digit
if (ch >= '0' && ch <= '9')
// ...
// check if ch is a whitespace
if ((ch == ' ') || (ch =='\n') || (ch == '\t'))
// ...
上面的代码是 错误的,因为它只适用于英语和少数一些语言。要使前一个示例国际化,请将其替换为以下语句:
char ch;
// ...
// This code is OK!
if (Character.isLetter(ch))
// ...
if (Character.isDigit(ch))
// ...
if (Character.isSpaceChar(ch))
// ...
Character 方法依赖于 Unicode 标准来确定字符的属性。Unicode 是一种支持世界主要语言的 16 位字符编码。在 Java 编程语言中,char 值表示 Unicode 字符。如果使用相应的 Character 方法检查 char 的属性,则代码将适用于所有主要语言。例如,如果字符是中文,德语,阿拉伯语或其他语言的字母,Character.isLetter 方法将返回 true。
以下列表给出了一些最有用的 Character 比较方法。Character API 文档完全指定了这些方法。
isDigitisLetterisLetterOrDigitisLowerCaseisUpperCaseisSpaceCharisDefinedCharacter.getType 方法返回字符的 Unicode 类别。每个类别对应于 Character 类中定义的常量。例如,getType 返回字符 A 的 Character.UPPERCASE_LETTER 常量。有关 getType 返回的类别常量的完整列表,请参阅 Character API 文档。以下示例显示如何使用 getType 和 Character 类别常量。这些 if 语句中的所有表达式都是 true:
if (Character.getType('a') == Character.LOWERCASE_LETTER)
// ...
if (Character.getType('R') == Character.UPPERCASE_LETTER)
// ...
if (Character.getType('>') == Character.MATH_SYMBOL)
// ...
if (Character.getType('_') == Character.CONNECTOR_PUNCTUATION)
// ...