in-loop vs out-of-loop变量声明

时间:2014-04-29 07:59:59

标签: java performance loops

在代码中:

for(int i=0; i<1000000; i++){
    String abc = "blahblahblah";
    abc = abc + foo();
    //save abc to file
}

我应该在此循环之前声明abc,还是以使这种差异无关的方式优化代码?

1 个答案:

答案 0 :(得分:4)

如果你只想在循环中使用该变量,最好在里面声明它。这样,当您进入循环的下一次迭代时,可以清除使用的内存。否则,您必须等到声明它的方法结束,或者当它是其成员的Object符合垃圾收集条件时。这与原始变量(与你的String对象相对应)略有不同,在方法结束之后总是会被清除。

换句话说,变量的范围应该始终尽可能小,以节省内存(以及其他原因)。

有关详细信息,请参阅this answer

至于速度的表现,在循环内部或外部声明它之间不应该有任何区别。由bytecode analysis herecomprehensive logical analysis here确认。

我希望这会有所帮助。