判断字符串中有多少个指定字符串 javase

public class Test86b {
public static void main(String[] args) {
String s="abvfshjavajfbjavanierbjavannjavajavajava";
String s1="java";
int count=0;
int index=-1;

    while(s.indexOf(s1) != -1){
        index=s.indexOf(s1);
        s.substring(index+s1.length());
        count++;
    }
    System.out.println(count);
}

}
请问这段代码有什么问题吗?为什么运行的时候一直没输出?

String s="abvfshjavajfbjavanierbjavannjavajavajava";
String s1="java";
String s2 = s.replace(s1, "");
count = (s.length() - s2.length()) / s1.length();
System.out.println(count);

s.substring(index+s1.length());这行代码s的值没有改变。
s=s.substring(index+s1.length());

    String s="abvfshjavajfbjavanierbjavannjavajavajava";
    String s1="java";
    int count = 0;
    int index = 0;
      while(s.indexOf(s1)!=-1){
            index=s.indexOf(s1) + s1.length();
            s = s.substring(index);
            count++;
        }
      System.out.println(count);
    }