Java中求字符串长度length()和codePointCount()的区别

在计算字符串长度时,Java的两种方法length()和codePointCount()一度让我困惑,运行书上例子得到的长度值是相等的,那为什么要设定两个方法呢?

对于普通字符串,这两种方法得到的值是一样的,但对于UniCode的编码来说,还是有一点区别。

常用的uniCode字符使用一个代码单元就可以表示,但有些辅助字符需要一对代码单元表示。

比如整数集合的数学符号"Z"(没办法打出来),它的代码点是U+1D56B,但它的代理单元是U+D835和U+DD6B,如果令字符串str = "/u1D56B",机器识别的不是"Z",而是一个代码点”/u1D56“和字符”B“,所以会得到它的代码点数是2,代码单元数也是2。

但如果令字符str = "/uD835/uDD6B",那么机器会识别它是2个代码单元代理的1个代码点”Z“,故而,length的结果是代码单元数量2,而codePointCount()的结果是代码点数量1.

但平常我们使用时,这两种求字符串长度的方法还是通用的,不用加以区别。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值