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 的边界情况