Java 教程是为 JDK 8 编写的。本页中描述的示例和实践未利用在后续版本中引入的改进。
Character
类封装了 char
数据类型。对于 J2SE 版本 5,在 Character
类中添加了许多方法以支持补充字符。此 API 分为两类:在 char
和代码点值之间进行转换的方法,以及验证或映射代码点的有效性的方法。
本节介绍 Character
类中可用方法的子集。有关可用 API 的完整列表,请参阅 Character
类规范。
下表包含 Character
类中最有用的转换方法或便于转换的方法。codePointAt
和 codePointBefore
方法包含在此列表中,因为文本通常位于序列中,例如 String
,这些方法可以是用于提取所需的子字符串。
方法 | 描述 |
---|---|
toChars(int codePoint, char[] dst, int dstIndex) toChars(int codePoint) |
将指定的 Unicode 代码点转换为其 UTF-16 表示形式,并将其放在 char 数组中。示例用法:Character.toChars(0x10400) |
toCodePoint(char high, char low) toCodePoint(CharSequence, int) toCodePoint(char[], int, int) |
将指定的参数转换为其补充代码点值。不同的方法接受不同的输入格式。 |
codePointAt(char[] a, int index) codePointAt(char[] a, int index, int limit) codePointAt(CharSequence seq, int index) |
返回指定索引处的 Unicode 代码点。第三种方法采用 CharSequence ,第二种方法强制索引的上限。 |
codePointBefore(char[] a, int index) codePointBefore(char[] a, int index, int start) codePointBefore(CharSequence seq, int index) codePointBefore(char[], int, int) |
返回指定索引之前的 Unicode 代码点。第三种方法接受 CharSequence ,其他方法接受 char 数组。第二种方法强制索引下限。 |
charCount(int codePoint) |
可由单个 char 表示的字符返回值 1。需要两个 char 的补充字符返回值 2。 |
使用 char
基本数据类型的一些先前方法(例如 isLowerCase(char)
和 isDigit(char)
)被一些方法取代支持补充字符,例如 isLowerCase(int)
和 isDigit(int)
。支持前面的方法,但不适用于补充字符。要创建全球应用程序并确保代码与任何语言无缝协作,建议你使用这些方法的较新形式。
请注意,出于性能原因,大多数接受代码点的方法都不会验证代码点参数的有效性。你可以使用 isValidCodePoint
方法实现此目的。
下表列出了 Character
类中的一些验证和映射方法。
方法 | 描述 |
---|---|
isValidCodePoint(int codePoint) |
如果代码点在 0x0000 到 0x10FFFF 的范围内(包含),则返回 true。 |
isSupplementaryCodePoint(int codePoint) |
如果代码点在 0x10000 到 0x10FFFF 的范围内(包含),则返回 true。 |
isHighSurrogate(char) |
如果指定的 char 在 \uD800 到 \uDBFF 的高位代理范围内(包含),则返回 true。 |
isLowSurrogate(char) |
如果指定的 char 在 \uDC00 到 \uDFFF 的低位代理范围内(包含),则返回 true。 |
isSurrogatePair(char high, char low) |
如果指定的高和低位代理代码值表示有效的代理对,则返回 true。 |
codePointCount(CharSequence, int, int) codePointCount(char[], int, int) |
返回 CharSequence 或 char 数组中的 Unicode 代码点数。 |
isLowerCase(int) isUpperCase(int) |
如果指定的 Unicode 代码点是小写或大写字符,则返回 true。 |
isDefined(int) |
如果在 Unicode 标准中定义了指定的 Unicode 代码点,则返回 true。 |
isJavaIdentifierStart(char) isJavaIdentifierStart(int) |
如果允许指定的字符或 Unicode 代码点作为 Java 标识符中的第一个字符,则返回 true。 |
isLetter(int) isDigit(int) isLetterOrDigit(int) |
如果指定的 Unicode 代码点是字母,数字,或字母或数字,则返回 true。 |
getDirectionality(int) |
返回给定 Unicode 代码点的 Unicode 方向性属性。 |
Character.UnicodeBlock.of(int codePoint) |
返回表示包含给定 Unicode 代码点的 Unicode 块的对象,如果代码点不是已定义块的成员,则返回 null 。 |
String
,StringBuffer
和 StringBuilder
类还具有可与补充字符一起使用的构造函数和方法。下表列出了一些常用方法。有关可用 API 的完整列表,请参阅 String
,StringBuffer
和 StringBuilder
类的 javadoc。
构造函数或方法 | 描述 |
---|---|
String(int[] codePoints, int offset, int count) |
分配一个新的 String 实例,该实例包含 Unicode 代码点数组的子数组中的字符。 |
String.codePointAt(int index) StringBuffer.codePointAt(int index) StringBuilder.codePointAt(int index) |
返回指定索引处的 Unicode 代码点。 |
String.codePointBefore(int index) StringBuffer.codePointBefore(int index) StringBuilder.codePointBefore(int index) |
返回指定索引之前的 Unicode 代码点。 |
String.codePointCount(int beginIndex, int endIndex) StringBuffer.codePointCount(int beginIndex, int endIndex) StringBuilder.codePointCount(int beginIndex, int endIndex) |
返回指定范围内的 Unicode 代码点数。 |
StringBuffer.appendCodePoint(int codePoint) StringBuilder.appendCodePoint(int codePoint) |
将指定代码点的字符串表示形式追加到序列中。 |
String.offsetByCodePoints(int index, int codePointOffset) StringBuffer.offsetByCodePoints(int index, int codePointOffset) StringBuilder.offsetByCodePoints(int index, int codePointOffset) |
返回给定索引偏移给定数量的代码点的索引。 |