Java核心技术卷I基础知识(原书第9版)
上QQ阅读APP看书,第一时间看更新

3.6.6 代码点与代码单元

Java字符串由char序列组成。从3.3.3节“char类型”已经看到,char数据类型是一个采用UTF-16编码表示Unicode代码点的代码单元。大多数的常用Unicode字符使用一个代码单元就可以表示,而辅助字符需要一对代码单元表示。

length方法将返回采用UTF-16编码表示的给定字符串所需要的代码单元数量。例如:

要想得到实际的长度,即代码点数量,可以调用:

调用s.charAt(n)将返回位置n的代码单元,n介于0~s.length()-1之间。例如:

要想得到第i个代码点,应该使用下列语句

注释:类似于C和C++,Java对字符串中的代码单元和代码点从0开始计数。

为什么会对代码单元如此大惊小怪?请考虑下列语句:

使用UTF-16编码表示需要两个代码单元。调用

返回的不是空格,而是第二个代码单元。为了避免这种情况的发生,请不要使用char类型。这太低级了。

如果想要遍历一个字符串,并且依次查看每一个代码点,可以使用下列语句:

可以使用下列语句实现回退操作: