java 中通过调用 string.chars() 方法可以直接获取表示字符串字符的 intstream。该方法返回一个流,其中每个元素是对应字符的 unicode 码点值(int),默认情况下会包含空字符(\u0000)。若需过滤掉空字符并还原为字符串,可结合 filter 和 collect 操作完成。

如何过滤掉字符串中的空字符?
要过滤掉字符串中的空字符,可以在获取 IntStream 后使用 filter(n -> n != 0) 排除值为 0 的元素,再通过 collect 将结果收集为新的字符串。具体做法是调用 String.join("", ...) 或手动构建 StringBuilder 来还原字符序列。

import java.util.stream.IntStream;
public class Main {
public static void main(String[] args) {
String input = "a\u0000b";
String result = IntStream.of(input.chars())
.filter(n -> n != 0)
.mapToObj(c -> String.valueOf((char) c))
.collect(java.util.stream.Collectors.joining());
System.out.println(result); // 输出: ab
}
}如何将字符流转换为字符数组?
将字符流转换为字符数组时,可以使用 toArray() 方法直接获取 int[],或者通过 mapToObj 转换后再收集为 Character[]。对于基本类型数组,推荐直接使用 toArray() 以避免装箱开销。
立即学习“Java免费学习笔记(深入)”;

import java.util.stream.IntStream;
public class Main {
public static void main(String[] args) {
String input = "abc";
int[] chars = input.chars().toArray();
for (int c : chars) {
System.out.print((char) c + " ");
}
}
}chars() 方法在遇到空字符时会返回什么?
chars() 方法在遇到空字符时会将其作为值为 0 的整数保留在流中。这意味着如果不进行过滤,空字符会被视为有效字符参与后续处理。开发者需注意这一点,特别是在处理可能包含控制字符的输入时。


















