String的contains方法源码
public static void main(String[] args) {
String str = "123";
System.out.println(str.contains("12"));
}
咱们点进去看一下这个contains方法
public boolean contains(CharSequence s) {
return indexOf(s.toString()) > -1;
}
我们发现传进去的是一个CharSequence类型的数据,对于CharSequence类型参考下面的博客
https://blog.csdn.net/yaomingyang/article/details/79253470
继续看下indexOf方法
public int indexOf(String str) {
return indexOf(str, 0);
}
接收的是一个字符串,又调用了indexOf方法,把接收的字符串和0传入
public int indexOf(String str, int fromIndex) {
return indexOf(value, 0, value.length,
str.value, 0, str.value.length, fromIndex);
}
再继续看这个重载的indexOf方法
/**
* Code shared by String and StringBuffer to do searches. The
* source is the character array being searched, and the target
* is the string being searched for.
*
* @param source the characters being searched.
* @param sourceOffset offset of the source string.
* @param sourceCount count of the source string.
* @param target the characters being searched for.
* @param targetOffset offset of the target string.
* @param targetCount count of the target string.
* @param fromIndex the index to begin searching from.
*/
static int indexOf(char[] source, int sourceOffset, int sourceCount,
char[] target, int targetOffset, int targetCount,
int fromIndex) {
if (fromIndex >= sourceCount) {
return (targetCount == 0 ? sourceCount : -1);
}
if (fromIndex < 0) {
fromIndex = 0;
}
if (targetCount == 0) {
return fromIndex;
}
char first = target