在代码中:
for(int i=0; i<1000000; i++){
String abc = "blahblahblah";
abc = abc + foo();
//save abc to file
}
我应该在此循环之前声明abc,还是以使这种差异无关的方式优化代码?
答案 0 :(得分:4)
如果你只想在循环中使用该变量,最好在里面声明它。这样,当您进入循环的下一次迭代时,可以清除使用的内存。否则,您必须等到声明它的方法结束,或者当它是其成员的Object
符合垃圾收集条件时。这与原始变量(与你的String
对象相对应)略有不同,在方法结束之后总是会被清除。
换句话说,变量的范围应该始终尽可能小,以节省内存(以及其他原因)。
有关详细信息,请参阅this answer。
至于速度的表现,在循环内部或外部声明它之间不应该有任何区别。由bytecode analysis here和comprehensive logical analysis here确认。
我希望这会有所帮助。