繁体   English   中英

++ 和 +1 之间的区别

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM