【发布时间】:2016-02-23 14:05:58
【问题描述】:
当我在 while 循环的最后一行有 startIndex++ 时,它会导致无限循环,但使用 startIndex + 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++”的意思是“增加 startIndex 并让表达式的值成为新值”,而在 C 中,你会“有罪”在没有中间序列点的情况下修改存储两次,从而导致未定义的行为。
-
var++ 与 var += 1 相同。+ 只是添加到变量中。
标签: java while-loop infinite-loop increment