1. public int indexOf(String str)如果字符串参数作为一个子字符串在此对象中出现,则返回第一个这种子字符串的第一个字符的索引;如果它不作为一个子字符串出现,则返回 -1。
那么对应你的代码,当返回值为-1时 也就说在目标字符串中 根本就没有key这个字符串.所以while循环结束.
2.substring(int beginIndex)返回一个新的字符串,它是此字符串的一个子字符串。该子字符串从指定索引处的字符开始,直到此字符串末尾。
用你的例子:
"abkkcdkkefkkskk" 获取 得到kk第一次出现的index后 从index+"kk".length() 的位置一直到原字符串末尾 获取子串.也就是"cdkkefkkskk";
用while循环重复这个获取的过程 直到返回值为-1,也就是不再有"kk"出现,最终得到的count就是"kk"出现的次数了.
3.如果你的字符串是"kkabkkcdkkefkks" 用str.split("kk").length得到的结果是出现了5次 而实际上"kk"只出现了4次.
为什么呢?因为这样截取的数组是 [,ab,cd,ef,s] .也就是说 当"kk"出现在字符串的开头 这种方法是不适用的 所以不推荐.
|