Когда у меня было startIndex++
в последней строке цикла while, это вызвало бесконечный цикл, но с использованием startIndex +
1 программа работала нормально. Мне было интересно, почему это так?Разница между ++ и +1
public static int numOccurrences(String src, String q) {
int startIndex = src.indexOf(q);
int counter = 0;
while (startIndex != -1) {
counter++;
startIndex = src.indexOf(q, startIndex + 1);
}
return counter;
}
Я не уверен, что гарантии находятся на Java, но «startIndex ++» означает «increment startIndex и пусть значение выражения будет новым значением», а на C вы будете «виноваты» в изменении хранилища дважды без промежуточную точку последовательности и, следовательно, вызывают неопределенное поведение. – Vatine
var ++ - это то же самое, что и var + = 1. + просто добавляет к переменной. –