所以我知道String#codePointAt(int),但它是由char偏移索引,而不是由代码点偏移索引.
我正在考虑尝试这样的事情:
String#charAt(int)得到char的指数char在高代理范围内
String#codePointAt(int)获取代码点,并将索引增加2char值作为代码点,并将索引递增1但我担心的是
char值或一个值根据Java SE 7规范,Java使用Unicode UTF-16标准来表示字符.当想象一个String作为简单阵列 16位变量中的每个包含一个字符,寿命也很简单.
不幸的是,有16位的代码点是不够的(我相信它是所有Unicode字符的16/17).所以在a中String,这没有直接问题,因为当想要使用额外的两个字节存储这些~1.048.576个字符中的一个时,String将仅使用其中的两个数组位置.
这没有任何直接问题,适用于Strings,因为总有一个额外的两个字节.虽然单变量与UTF-16编码相比,具有16位的固定长度,但是如何存储这些字符,特别是Java如何使用其2字节"char"来完成类型?