當你實例調用構造一個新的對象,即 Foo bar = new Foo(var);
在堆(Java)上創建對象之後調用對象的構造函數嗎?
什麼時候在構造函數中的代碼實際上獲取關係調用來創建對象堆?當構造函數修改bar的成員變量時,是否存儲已分配的變量幷包含默認值?
當你實例調用構造一個新的對象,即 Foo bar = new Foo(var);
在堆(Java)上創建對象之後調用對象的構造函數嗎?
什麼時候在構造函數中的代碼實際上獲取關係調用來創建對象堆?當構造函數修改bar的成員變量時,是否存儲已分配的變量幷包含默認值?
一旦調用了new
,它就知道需要將多少內存分配到一個變量類型的堆中,在您的情況下是Foo。一旦只分配了內存,那麼是設置的值。想想看,如果你沒有成員變量的內存,你還有什麼要分配成員變量?如果沒有內存,新的會拋出一個你需要處理的異常。
過程:
null
new
5)調用構造函數 - 這是原始問題 – 2010-03-10 18:06:38
@ian - 對不起,我添加了:)。謝謝你! – JonH 2010-03-10 18:14:25
你能說這些信息的來源嗎?我想了解更多。 – 2010-03-31 12:52:05
當JVM遇到新的關鍵字時,它爲該類類型分配所需的內存,如果沒有初始化,則它將所有成員初始化爲其默認值,並且如果該成員是對象,則爲空。
這裏 Foo bar = new Foo(var);我們正在創建bar對象。當我們使用時,新的關鍵字的內存分配在堆上。分配的內存量取決於類的實例變量.JVM將計算要分配的內存量,然後使用新的它將分配內存。這裏是一個引用變量指向對象分配的堆。
構造函數不能被調用,直到內存存在。
對於成員變量,它是同一規則的遞歸應用程序。
@theactiveactor - 你需要更多的幫助嗎?我注意到這個問題沒有得到任何批准就被打開了。 – JonH 2010-03-12 13:42:03