string.indexof() 返回子串首次出现的索引(从0开始),未找到返回-1;支持从指定位置查找,空串查找恒返0,null调用抛异常。

Java 中 String.indexOf() 是查找子串在字符串中首次出现位置的最常用方法,返回索引(从 0 开始),没找到则返回 -1。
基本用法:查找子串第一次出现的位置
调用 str.indexOf("sub") 即可。它区分大小写,且只返回第一个匹配位置。
-
"hello world".indexOf("o")→ 返回 4(第一个 'o' 的位置) -
"abcabc".indexOf("abc")→ 返回 0 -
"Java".indexOf("va")→ 返回 2 -
"test".indexOf("xyz")→ 返回 -1(未找到)
从指定位置开始查找
使用 indexOf(String str, int fromIndex) 可跳过开头部分,适合找第二次、第三次出现的位置。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
-
"banana".indexOf("a", 2)→ 从索引 2 开始找,返回 3(第二个 'a') -
"ababab".indexOf("ab", 2)→ 返回 2(从位置 2 起第一个 "ab" 就在那) - 若
fromIndex超出字符串长度,直接返回 -1
注意空字符串和边界情况
空字符串 "" 是特殊值:任何非 null 字符串调用 indexOf("") 都返回 0(因为空串在每个位置都“存在”)。
-
"hello".indexOf("")→ 0 -
"".indexOf("a")→ -1(空串里找不到任何非空子串) -
null不能调用indexOf,否则抛NullPointerException
配合其他方法做实用判断
单独用 indexOf 常用于判断是否包含子串,或定位后截取/替换:
- 判断包含:
str.indexOf("key") != -1 - 获取后续内容:
int i = str.indexOf(":"); if (i != -1) { String value = str.substring(i + 1); } - 避免
contains()的开销时,indexOf更底层、略快(但语义清晰度不如contains)
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










