物件在建立的時候都發生了什麼?

2021-07-09 04:09:52 字數 883 閱讀 5983

我們知道乙個類可以有很多部分組成,建構函式,靜態方法、靜態成員變數,成員變數,構造**塊,區域性**塊,靜態**塊。那麼類在載入進記憶體並且建立物件時都發生了什麼,又都有什麼順序呢?

先看乙個栗子吧:

class person

private string name;

private int age = 18;

private static string country = "cn";

public static void print()

static

public person(string name)

class  testperson

public static void main(string args)

如果對物件的建立過程熟悉的話,答案還是很容易得出的:

haha

null,18,cn

aaron

整個過程其實可以分為如下幾步:

* person p = new person("aaron");

* 1.物件的類檔案載入進記憶體

* 2.靜態成員(靜態屬性和靜態方法),方法被呼叫才會執行------(country賦cn)

* 3.靜態**塊(優先於物件),給類初始化------(列印haha)

* 4.物件開闢堆記憶體空間(分配記憶體位址)

* 5.在堆記憶體中建立物件的特有屬性,進行預設初始化-----(name賦null,age賦0)

* 6.對屬性進行顯示初始化-----(age賦18)

* 7.構造**塊初始化,給物件初始化------(列印null,18,cn)

* 8.對物件進行對應的建構函式初始化

* 9.將記憶體位址賦值給棧記憶體的p變數

電腦開機都發生了什麼?

程序 這個詞想必大家都有所耳聞,在linux作業系統中,不管軟體,還是命令,還是服務,還是指令碼,歸根結底都是乙個個程序。只不過有的程序曇花一現,用過就消失 用的程序會一直跑在後台,比如用ps看到的程序。既然一切都是程序,那麼最根本的程序是哪個呢?或者說,是誰啟動了那麼多後台程序呢?這就是今天要說的...

簡述main 執行前後都發生了什麼?

題目 簡述main 執行前後都發生了什麼?1 mian 在執行第一行 之前,呼叫全域性物件 靜態物件的建構函式,初始化全域性變數 靜態變數。2 main 函式最後一句 執行之後會呼叫在atexit 中註冊的函式,並且呼叫順序與註冊順序相反。atexit 函式的引數是乙個指向函式的指標,通過將函式名作...

從輸入URL到頁面顯示,都發生了什麼?

瀏覽器將使用者在位址列中輸入的url封裝成請求報文 瀏覽器發起dns解析,將網域名稱轉換為ip位址 remote address 14.215.177.38 443 瀏覽器將請求報文傳送給伺服器 伺服器接收請求報文並解析,解析完畢知道使用者要請求什麼資料 伺服器對使用者需要請求的資料進行處理,處理完...