文章目录
一,代码点
1.1 什么是代码点
解释:代码点是一个字符,所代表的编码的点数,这个点数通常用16进制表示
是针对编码Unicode 来说的,就是所有的字符都有唯一的一组16进制数字表示,
一组可能是 一个或者多个16进制数字
二,代码单元
2.1 什么是代码单元,代码单元是针对编码而来的,如
UTF-8 一个字节是一个代码单元
UTF-16 两个字节是一个代码单元
三 ,代码点和代码单元的联系和区别
如图所示:一个代码点 针对是Unicode 的编码,可能有一个代码单元组成,可能有两个代码单元组成,
而代码单元由不同的编码不同,如UTF-8 ,一个字节一个代码单元,
四 ,length()和codePointCount()的区别
前提:我用的是IDEA ,我所设置的编码是UTF-8
String str = "\uD835\uDD6BHello";
System.out.println(str);// 𝕫Hello
System.out.println(str.length());//------结果:7
System.out.println(str.codePointCount(0,str.length()));//----结果:6
**解释:这里UTF-8 编码,一个字节一个代码单元,但是呢 𝕫 这个字符 需要两个代码单元来存储,就是两个代码单元来存储,length()表示的是这个字符串有几个代码单元,所以结果是7,单其实真正的字符有6个,codePointCount()方法直接忽略代码单元,直接输出 真的的代码点数,就是直接输出有几个真的字符。
启示: ——————
—— 我们在用复杂的特殊字符的时候,判断是否有几个字符,就用codePointCount方法,如果用的字符都是一般的常见的字符,就用length() ,就够了,不会出错,为了保险起见,建议使用codePointCount()方法**