[英]Difference between ++ and +1
当我startIndex++
在while循环的最后一行就引起无限循环,但使用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;
}
考虑会发生什么 - 如果indexOf
失败,它返回-1
。 如果在那之后你有一个盲目的startIndex++
,那么你的 startIndex 将变为0
,循环将环绕,并且0 != -1
为真,继续循环。 你会得到另一个-1
,将它增加到0
,然后你到处去搜索、失败、增加、循环/重复。
表达式startIndex++
增加变量startIndex
的值,但它返回startIndex
的旧值。 在评估包含startIndex++
的表达式后,您将结果分配给startIndex
。 这意味着在您的情况下,增量被丢弃并且startIndex++
和startIndex
将具有完全相同的结果:每次都会发现相同的事件,并且您有一个无限循环。
表达startIndex + 1
,在另一方面,不的值更改startIndex
,但求值以下的值设定为整数startIndex
。 现在indexOf
在找到的出现之后开始搜索,因此您没有无限循环。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.