public static int show1(String str, String key) {
int count = 0;// 计数器
int tmp = 0;// 记录截取后的新位置
while ((tmp = str.indexOf(key)) != -1) {// 查找key(ss),找到的地址码给tmp
sop("str:" + str);
str = str.substring(tmp + key.length());// 截取
// 地址码+key长度,截取后重组成新str,继续while
// 截取指导索引位置的字符串
// 子串第一次出现的位置+长度=下一次的起始位置
count++;
}
return count;
}
+就是两个整数相加的意思
System.out.println("当前tmp:"+tmp+" ,key.length():"+key.length());
加号就是两个数相加的意思。
至于参数会不会导致越界,答案是不会的。
可以看substring的代码,参数最大可以传整个字符串的长度,而tmp是能找到key后的下标(开头的下标),最极端的,也就是加上key的长度后刚好等于字符串整个的长度。(反过来想,如果会超过的话,key就不可能匹配到了)
str = str.substring(tmp + key.length());
+的作用是2个整数相加,改变截取字符串的开始位置。