length(),和codePointCount代码点,和代码单元的区别

一,代码点

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()方法**

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值