Java:java.lang.Character可以用于Basic Multilingual Plane之外的字符吗?

时间:2015-08-07 12:43:30

标签: java

据我所知,java在uft16中保留字符串,每个代码点使用16(对于BMP)或32位。但我不确定类字符是否可用于保持需要32位的代码点。阅读http://docs.oracle.com/javase/7/docs/api/java/lang/Character.html没有帮助。那可以吗?

1 个答案:

答案 0 :(得分:2)

不,charCharacter无法代表BMP之外的代码点。这没有特定的类型,但所有Java API只使用int来引用代码点而不是UTF-16代码单元。

如果您查看codePoint*中的所有java.lang.Character方法,例如codePointAt(char[], int, int),您会看到他们使用int

根据我的经验,很少的代码(包括我自己的代码)正确地考虑了这一点,而是假设将字符串的长度作为其中的UTF-16代码单元的数量来说是合理的。 。话虽如此,"长度"对于字符串来说,这是一个非常难以理解的概念,因为它表示显示的字形数,而逻辑等效文本的不同规范化形式可以由不同的数字组成代码点...