我已經編寫如下一樣,我可以在循環內使用字符串文字嗎?
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