栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

为什么string.indexOf方法的参数在Java中是int

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

为什么string.indexOf方法的参数在Java中是int

真正
原因是,

indexOf(int)
预计一个Unipre码点,而不是16位UTF-16“字符”。Unipre代码点的长度实际上最多为21位。

(较长代码点的UTF-16表示实际上是2个16位“字符”值。这些值分别称为前导和尾随替代;从D800 16到DBFF 16以及从DC00 16到DFFF
16;请参阅Unipre FAQ-UTF
-8,UTF-16,UTF-32和BOM
,以获取详细信息。)

如果您提供

indexOf(int)
的代码点> 65535,它将搜索 一对 编码该代码点的UTF-16字符。

这是由javadoc声明的(虽然不是很清楚),对代码的检查表明这确实是方法的实现方式。


为什么不只使用16位字符?

这很明显。如果这样做的话,将没有一种简单的方法来在字符串中定位大于65535的代码点。对于那些开发可能包含文本代码点的国际化应用程序的人来说,这将是一个主要问题。(许多所谓的国际化应用程序都错误地假设a

char
代表代码点。通常并不重要,但越来越多地这样做了。)

但这对您没有任何影响。如果您的字符串仅由16位代码组成,或者仅由ASCII代码组成,则该方法仍然有效。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/438418.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号