java中统计字符出现次数最常用方式是遍历char数组并用==比较,其次可用indexof循环查找或stream流式处理,需注意大小写、空值及unicode边界情况。

Java 中统计字符串中某个字符出现的次数,最常用、最直接的方式是遍历字符串每个字符并计数。不需要引入复杂工具类,标准库就能高效完成。
用 for 循环遍历 char 数组
将字符串转为 char[],逐个比较,匹配则累加计数器。简单、易懂、性能好,适合大多数场景。
- 调用
str.toCharArray()获取字符数组 - 用增强 for 循环或传统 for 遍历
- 用
==比较基本类型char(注意不是.equals())
示例:
String str = "hello world";
char target = 'l';
int count = 0;
for (char c : str.toCharArray()) {
if (c == target) count++;
}
System.out.println(count); // 输出 3
用 String.indexOf() 循环查找
利用 indexOf(char, fromIndex) 从指定位置开始查找,每次找到后更新起始索引,直到返回 -1。适合想避免创建新数组的场景,空间开销略小。
- 初始从索引 0 开始查找
- 每次找到后,下次从
index + 1继续搜 - 注意不要写成
index++,否则可能跳过重复相邻字符
用 Java 8 Stream(简洁但稍重)
一行代码可实现,语义清晰,适合函数式风格偏好者或配合其他流操作时使用。但对简单计数来说略显重量,且有装箱开销。
- 调用
str.chars()得到IntStream - 用
filter(c -> c == target)筛选 - 最后用
count()返回长整型结果,需注意类型转换
示例:
long count = str.chars().filter(c -> c == 'l').count();
注意事项和边界情况
实际使用中要注意几个细节,避免低级错误:
-
区分大小写:'A' 和 'a' 是不同字符,如需忽略,先统一转成
toLowerCase()再统计 -
空字符串或 null:使用前建议判空,避免
NullPointerException -
中文、emoji 等 Unicode 字符:普通
char可能无法正确表示某些增补字符(如部分 emoji),此时应改用codePointAt()配合String.codePoints()处理
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











