我已经编写如下一样,我可以在循环内使用字符串文字吗?
for(int i=0 ; i<n; i++){
String a = someObject.getFirstName(); //may not come same value..
doManipulationon(a);
}
在代码审查,人们要求我删除字符串字面a
并直接使用someObject.getFirstName()
进行操纵。他们担心每次迭代都会在堆中创建字符串对象。
这是正确的方法吗?
我认为将getter分配给字符串变量会使代码更具可读性。
我喜欢你的答案,但你有一件事是错误的:字符串(和一般的对象)并不总是在堆中 - 实际的字符串(例如字符串文字)生活在PermGen中,它不属于该区域称为堆(请参阅http://stackoverflow.com/a/2051778/1162168) –
@MichaelSchmeißer是的,我们称之为“堆”甚至不是[堆数据结构](http:// en。 wikipedia.org/wiki/Heap_(data_structure))在Java!使用分代GC(这是HotSpot使用的),新分配的对象存在于更接近堆栈的内存块中,除了只能清除它(不弹出单个项目)。尽管如此,我还是试图让答案变得简单。 – yshavit