Text和String比较

一般认为Text类和String类是等价的,但二者之间其实存在着不小差别:
以《Hadoop权威指南》中的案例为例,给定字符串  String s = “\u0041\u00DF\u6771\uD801\uDC00”; //s打印出来为"Aß東?" ,字符串s由四个字符的Unicode编码组成:

Unicode编码
utf-8编码
utf-8编码所占字节数

A
\u0041
0010 1001 (41)
1Byte

ß
\u00DF
1101 1101 (223)
2Byte


\u6771
110 0111 0111 0001 (26481)
3Byte

?
\uD801\uDC00
1 0000 0100 0000 0000  (66560)
4Byte

对比一: Text对象的charAt( )方法返回的是当前位置字符对应的Unicode编码的位置(int类型),String对象返回的是当前位置对应的字符(char类型);
 
对比二: Text对象的长度是每个字符UTF-8编码所占字节数之和,String对象的长度对应char编码单元的个数;
 
对比三: Text对象的charAt( )方法与String对象的codePointAt( ) 方法更加类似,都返回当前位置字符对应的Unicode编码位置;
 
对比四: Text类的find( ) 方法返回的是当前位置的字节偏移量,String类的indexOf( )方法返回的是char编码单元中的索引位置。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值