Java String indexOf()方法
indexOf() 方法是 String 类的一个方法,用于查找特定字符或字符串首次出现的索引。以下是 indexOf() 方法的一些重载形式:
public int indexOf(int ch):查找指定字符首次出现的位置。public int indexOf(int ch, int fromIndex):从指定的索引开始,查找指定字符首次出现的位置。public int indexOf(String str):查找指定字符串首次出现的位置。public int indexOf(String str, int fromIndex):从指定的索引开始,查找指定字符串首次出现的位置。
如果找到了指定的字符或字符串,则返回其在字符串中的索引位置;如果没有找到,则返回 -1。需要注意的是,索引是从 0 开始计数的,也就是说如果一个字符处于字符串的第三个位置,则方法将返回 2。
下面是一个示例代码:
public class Codekru {public static void main(String[] args) {String str1 = "codekru hii! codekru";System.out.println("index of character 'i' is: " + str1.indexOf('i'));System.out.println("index of character 'm' is: " + str1.indexOf('m')); // 这将返回 -1,因为 'm' 并不在字符串中}
}
输出将是:
index of character 'i' is: 9
index of character 'm' is: -1
在这个例子中,有两个 ‘i’ 字符,indexOf() 返回了首次出现的 ‘i’ 的索引位置。而对于字符 ‘m’,因为它完全不存在于字符串中,所以返回了 -1。
indexOf(int ch) 方法的时间复杂度为 O(n),其中 n 是被迭代的字符串的长度。最好的情况是 O(1),即当字符位于第一个位置时;最坏的情况是 O(n),即当字符位于最后一个位置或根本不存在。
对于带有 fromIndex 参数的 indexOf(String str, int fromIndex) 方法,时间复杂度为 O(m*n),其中 m 是需要搜索的字符串的长度,而 n 是作为参数传递的字符串的长度。
特殊情况:
- 如果在
indexOf()方法中传入了一个负数索引,那么它不会抛出异常,而是会将0视为开始搜索的位置。 - 如果传入了一个大于等于字符串长度的索引,那么结果将会是
-1。 - 如果对一个
null的字符串使用indexOf()方法,这里将会抛出NullPointerException。
