String.indexOf() 是 Java 中查找字符首次出现位置的高效方法,返回从0开始的索引或-1;支持单字符搜索、指定起始位置搜索,需注意传参类型、空值校验及Unicode兼容性。

String.indexOf() 是 Java 中最直接、高效的方式,用于查找指定字符在字符串中第一次出现的位置。它返回一个 int 类型索引值:找到则返回从 0 开始的下标;未找到则返回 -1。无需遍历、无需正则,一行代码即可完成定位。
基础用法:查单个字符
调用 str.indexOf(ch) 即可:
- ch 是 char 类型(注意不是 String),例如
'a'、' '、'@' - 搜索区分大小写,
"Abc".indexOf('a')返回 -1,而"Abc".indexOf('A')返回 0 - 空字符串
""调用该方法始终返回 -1
进阶技巧:从指定位置开始搜索
使用重载方法 str.indexOf(ch, fromIndex) 可跳过开头部分,提升效率或实现“第二次出现”等逻辑:
fromIndex是起始搜索下标(含),必须 ≥ 0;若 ≥ 字符串长度,直接返回 -1- 想找第二次出现的
'e':先int first = s.indexOf('e');,再int second = s.indexOf('e', first + 1); - 避免越界:建议检查
first != -1再调用第二次搜索
常见误区与注意事项
容易出错的地方往往不在语法,而在语义理解:
- 不要传入字符串如
"a"—— 这会调用indexOf(String)重载,性能略低且易混淆 - 索引从 0 开始,不是 1;
"hello".indexOf('h')返回 0,不是 1 - null 字符串调用会抛
NullPointerException,使用前务必判空 - 中文、emoji 等 Unicode 字符同样适用,因为
char在 Java 中是 UTF-16 编码单位(对基本多文种平面字符完全准确)
实用小示例:提取邮箱用户名
快速获取 "user@example.com" 中 @ 前的部分:
String email = "user@example.com";int atPos = email.indexOf('@');String user = (atPos != -1) ? email.substring(0, atPos) : "";
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











