这是我想弄清楚的.
Case 1:
for(Foo foo : listOfFoos) {
  Bar bar = foo.getBar();
  if(bar == something) {
    //Do something else
    continue;
  }
}
Case 2:
for(Foo foo : listOfFoos) {
  if(foo.getBar() == something) {
    //Do something else
    continue;
  }
}
如果这list包含五百万Foo's,那么第二种情况在速度或记忆方面是否会优于第一种情况?
不会.这两个片段在CPU和内存占用方面完全相同.
javac发出的字节码实际上略有不同.(在案例1中使用了一个额外的局部变量和一对astore/ aload.)然而,这仍然是无关紧要的,因为局部变量将由 JVM/JIT内联.