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
。