码点与代码单元
码点
码点是指与一个编码表中的某个字符对应的代码值。
在Unicode标准中,码点采用16进制书写,并加上U+,例如U+0041就是拉丁字母A的码点。
代码单元
UTF-16编码采用不同长度的编码表示所有Unicode码点,在基本多语言平面,每个字符用16位表示,通常称为代码单元。
char数据类型是一个采用UTF-16编码表示Unicode码点的代码单元。最常用的Unicode字符使用一个代码单元就可以表示。
public class CodePoint {
public static void main(String[] args) {
String greeting = "Hello";
System.out.println(greeting.length());
//length方法返回采用UTF-16编码表示给定字符串需要的代码单元数量
System.out.println(greeting.codePointCount(0,greeting.length()));
//要想得到实际的长度,即码点数量,使用codePointCount方法
System.out.println(greeting.offsetByCodePoints(0,2));
//得到第2个码点的索引
System.out.println(greeting.codePointAt(greeting.offsetByCodePoints(0,2)));
//使用codePointAt得到码点,返回值类型为int
}
}
结果
5
5
2
108