当我像这样写一个简单的 for 循环时

for (int i = 0; i < myList.size(); i++){}

在 Java、C 和 C++ 中,它是在每次迭代中重新评估 myList.size() 还是在循环开始时仅重新评估一次?如果它重新评估,是否预先评估大小,即,
int n = myList.size();
for (int i = 0; i < n; i++){}

在性能方面给了我们一些重要的东西?

最佳答案

对于 Java:

for (int i=0; i<myList.size(); i++){}

每次 循环迭代期间评估条件;因此,通过将该调用移动到循环前的 size() 会略微提高性能。

但是在 Java 中你应该更喜欢 for-each
for (Whatever thingy : list)

无论如何表示法(在可能的情况下)。

您可以在 Java 语言规范的 14.14.1 章节中阅读有关内容。

关于java - for 循环是否在每次迭代中重新评估其主体中的函数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43418365/

10-12 05:38