当我像这样写一个简单的 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/