因为java 8 String.chars()返回一个IntStream,如果你想要一个字符流,我找到的最佳答案是通过强制转换i - > (char)我,我想知道是否有人知道这是否适用于实际占用8个字节的UTF-16字符?
答案 0 :(得分:1)
取决于您的正确定义:不,它没有。
Java char
是一个16位UTF-16代码单元。任何比这长的东西都表示为两个char
(as "surrogate pairs")。
String#length()
也是如此。它将返回char
的数字,因此您的“长字符”将计为两个。
返回IntStream
的原因是just to not need to introduce a CharStream
class。包含的数据仍然只在char
16位范围内。
但,.codePoints()
除了chars()
之外,还会返回32位Unicode代码点(也称为IntStream
)。