1. 方法介绍
indexOf()
是 Java String 类的核心方法之一,用于查找字符或子字符串在目标字符串中首次出现的位置索引。支持从指定位置开始搜索,是字符串操作中的高频工具。
⚠️ 关键特性:
- 返回目标内容首次出现的索引位置(从0开始)
- 若未找到目标内容,固定返回 -1
- 区分大小写("A"和"a"视为不同字符)
2. 可用签名
提供四种重载方法,覆盖不同搜索场景:
// 查找字符首次出现位置
public int indexOf(int ch)
// 从指定位置开始查找字符
public int indexOf(int ch, int fromIndex)
// 查找子字符串首次出现位置
public int indexOf(String str)
// 从指定位置开始查找子字符串
public int indexOf(String str, int fromIndex)
✅ 使用建议:
- 优先使用
String
参数版本(更直观) fromIndex
参数可减少不必要的搜索范围
3. 示例代码
@Test
public void whenCallIndexOf_thenCorrect() {
String str = "foo";
// 查找字符 'o' 首次出现位置
assertEquals(1, str.indexOf("o"));
// 查找不存在的字符
assertEquals(-1, str.indexOf("s"));
}
典型应用场景
// 检查字符串是否包含子串
if (str.indexOf("target") != -1) {
// 存在子串的处理逻辑
}
// 分割文件路径(简单粗暴版)
int lastDot = filename.lastIndexOf(".");
String extension = filename.substring(lastDot + 1);
❌ 常见误区:
- 误认为返回布尔值(实际返回索引)
- 忽略大小写差异(需先统一大小写)
- 忘记处理 -1 的边界情况