我正在看一些lwjgl的教程,併發生在我身上,而不是將類實例化爲一個變量,實例化它並直接調用該方法而不保存該對象。實例化一個類或不是?
我在想,如果以後不必重用對象,或者最好始終保持對象,最好這樣做。
我的意思是這樣的:
(new Lesson02()).run(fullscreen);
而是:
Lesson02 l2 = new Lesson02();
l2.run(fullscreen);
感謝。
我正在看一些lwjgl的教程,併發生在我身上,而不是將類實例化爲一個變量,實例化它並直接調用該方法而不保存該對象。實例化一個類或不是?
我在想,如果以後不必重用對象,或者最好始終保持對象,最好這樣做。
我的意思是這樣的:
(new Lesson02()).run(fullscreen);
而是:
Lesson02 l2 = new Lesson02();
l2.run(fullscreen);
感謝。
如果您以後不打算使用該對象,則沒有任何區別。所以選項1是好的。如果您按照選項2,最終在代碼中稍後不使用l2
,那麼無論如何它都會收集垃圾。
只要您以後不必使用該對象,那麼第一個選項應該沒問題。
我通常會使用第一個選項,除非構造函數和函數有很多參數,爲了便於閱讀,我更願意將其分開。一般規則:使用更易於理解和可讀的內容。
由於Java是一種垃圾收集語言,第一種方式是完全可以接受的。我更喜歡它,因爲它的緊湊性和第二個混亂。
這兩個選項實際上是相同的。
如果編譯器在優化時不好,那麼第一個編譯器可能會無限快地加快,因爲它更有可能被GC快速回收。
無論如何,前一個選項將創建一個臨時引用變量;命名或未命名,您有一個引用堆中對象的本地變量。如果它再也沒有被使用過,垃圾收集器會爲你清理。
這兩個選項僅在可讀性方面有所不同,因此您可以從該角度選擇您喜歡的選項。
第一種方式是最好的接受,因爲Java可以爲你分配內存。
無論哪種方式,JVM都爲Lesson02對象分配內存。 – 2011-05-29 11:33:31
疑問解決。謝謝大家! :) – Puyover 2011-05-28 20:51:40
只是一個註釋......圍繞構造函數調用的括號不是必需的。 '新的Lession02()。運行(全屏);'應該工作都一樣。我認爲括號看起來很愚蠢,除非它嵌套在更大的表達式中。 – Andy 2011-05-28 22:02:07
接受答案? – 2011-06-16 14:55:51