java 8 String.chars() 是否可以与 8 字节字符正常工作



由于java 8 String.chars()返回了一个IntStream,如果你想要一个字符流,我发现的最佳答案是通过铸造i ->(char)i,我想知道是否有人知道这是否适用于实际占用8字节的UTF-16字符?

根据你对正确定义的定义:不,它没有。

Java char是一个 16 位 UTF-16 代码单元。任何比这长的东西都表示为两个char(作为"代理对")。

String#length()也是如此.它将返回char数,因此您的"长字符"将计为二。

返回IntStream的原因只是为了不需要引入CharStream类。包含的数据仍将仅在 char 16 位范围内。

但是,除了 chars() 之外,还有.codePoints(),它确实返回 32 位 Unicode 代码点(也作为IntStream)。

相关内容

  • 没有找到相关文章

最新更新