[英]Is the constructor for an object invoked after object creation on heap (Java)?
當通過調用構造函數實例化新對象時,即Foo bar = new Foo(var);
構造函數中的代碼何時真正在與對象創建堆的關系中被調用? 當構造函數修改bar的成員變量時,是否已經存儲了已分配的變量並包含默認值?
一旦調用new
,它將知道需要為堆中的類型變量(例如Foo)分配多少內存。 一旦分配了該內存,便會設置值。 考慮一下,如果沒有足夠的成員變量存儲空間,該如何分配成員變量? 如果沒有內存,則new會引發您需要處理的異常。
處理:
new
null
當JVM遇到new關鍵字時,它將為該類類型分配所需的內存,如果沒有初始化,則它將所有成員初始化為其默認值,如果該成員是一個對象,則將其初始化為null。
這里Foo bar = new Foo(var); 我們正在創建bar對象。當我們使用new關鍵字在堆上分配內存時,分配的內存量取決於該類的實例變量.JVM將計算要分配的內存量,然后使用new它將分配此處的條是指向對象分配到的堆上的引用變量。
直到內存存在,才能調用構造函數。
對於成員變量,這是相同規則的遞歸應用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.