你会怎么做?

 doThings(folder.getInstructions()) ;
 for (Instruction instruction : folder.getInstructions()) {
    // do things
 }
functionCall(folder.getInstructions()) ;

或这个 :
instructions = folder.getInstructions() ;
doThings(instructions)
for (Instruction instruction : instructions) {
  // do things
}
functionCall(instructions) ;

最重要的是,我想知道何时在本地变量中存储值更有效,何时进行函数调用更好。

最佳答案

更具可读性更有效。临时表达式和局部变量需要相同的空间,从CPU/JVM的角度看,它们并没有太大的区别。 JVM将在优化/内嵌方面做得更好。

但是,如果getInstructions()方法调用很昂贵,则将其缓存在本地变量中。如果这只是一个简单的方法,那么无论如何它都会被内联。同样,在您的特殊情况下,恕我直言,如果getInstructions()随时间推移可能会产生不同的结果,则局部变量更具可读性,甚至可能更正确。

09-05 12:14