我確實認爲自己在Java方面非常有經驗,但仍然存在一些我不太確定的小問題。Java:聲明和初始化的最佳實踐
我總是嘗試寫出可維護,易讀的代碼,並以最高的效率爲目標。 例如,我只在真正需要時才調用「新」操作符。
這是因爲我不想不必要地分配內存。 但支持變量呢?
很多人都傾向於來聲明一個String剛分配這樣一些長期的屁股方法調用:
字符串幫手= Class.method1()方法2(PARAM).getter();
我總是懷疑這是不是分配比需要更多的內存。 getter已經返回一個新的對象,現在通過引用它來分配更多的內存。 當我多次使用此getter時,輔助字符串很方便,但是如果只需要一次,直接傳遞該方法而不是聲明新變量會更好嗎? 這是否真的將內存分配給堆?對象a,b,c,d,e,f,g,h,i,j ...;以及對象a,b,c,d,e,f,g,h,i,j ...;
我希望一些比我更有經驗的Java人能告訴我他們是如何處理這樣的基本事情的。謝謝! :)
在你的例子中,在_stack_上會使用更多的內存,而不是_heap_。這是一個很小的數目,不值得擔心。重要的是,通過給字符串一個有用的名字,你可以使你的代碼更加自我記錄,因此更具可讀性。 –
「getter函數已經返回一個新的對象......」 - 不,通常情況下,如果它只是返回一個被調用對象成員的引用,就像大多數getter方法一樣。 – Jesper
實際上更重要的是'Class.method1()。method2(param)。getter()'是公然違反[Demeter法](https://en.wikipedia.org/wiki/Law_of_Demeter)(最少知識原則),使得代碼與其依賴關係緊密結合,因此更加困難保持。 –