在Java核心卷一种看到了这个知识点,总结下:
- 在Java种,char类型描述了UTF-16编码种的一个代码单元.
- 有些Unicode字符可以用一个char描述,有些Unicode字符则需要两个字符.
- 字符串的length()方法返回的是代码单元的数量,非真实字符串长度(码点).
- 字符串的charAt()方法返回的是给定位置的代码单元.
public static void main(String[] args) {
String str = "a𝕆";//a 是普通字符,后面是一个辅助字符,需要两个char表示
System.out.println(str.length());//返回代码单元的数量,结果为三.
int realLength = str.codePointCount(0, str.length());
System.out.println(realLength);//结果为2,真实长度
}