java 8 String.chars()是否能正常使用8字节字符?

时间:2016-04-27 00:51:29

标签: string stream java-8

因为java 8 String.chars()返回一个IntStream,如果你想要一个字符流,我找到的最佳答案是通过强制转换i - > (char)我,我想知道是否有人知道这是否适用于实际占用8个字节的UTF-16字符?

1 个答案:

答案 0 :(得分:1)

取决于您的正确定义:不,它没有。

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

String#length()也是如此。它将返回char的数字,因此您的“长字符”将计为两个。

返回IntStream的原因是just to not need to introduce a CharStream class。包含的数据仍然只在char 16位范围内。

.codePoints()除了chars()之外,还会返回32位Unicode代码点(也称为IntStream)。