卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

static變量初始化 如何初始化一個類中的靜態(tài)成員變量?

如何初始化一個類中的靜態(tài)成員變量?如果我們不考慮父類,我們可以先進(jìn)行靜態(tài)初始化,然后進(jìn)行非靜態(tài)初始化。靜態(tài)初始化包括靜態(tài)成員變量和靜態(tài)塊的初始化。實際上,靜態(tài)塊在編譯期間是集中的。非靜態(tài)初始化包括非靜

如何初始化一個類中的靜態(tài)成員變量?

如果我們不考慮父類,我們可以先進(jìn)行靜態(tài)初始化,然后進(jìn)行非靜態(tài)初始化。

靜態(tài)初始化包括靜態(tài)成員變量和靜態(tài)塊的初始化。實際上,靜態(tài)塊在編譯期間是集中的。

非靜態(tài)初始化包括非靜態(tài)成員變量初始化、非靜態(tài)塊和構(gòu)造方法,編譯后集中在構(gòu)造方法中。

如果沒有相互通話,那就非常簡單了。首先,靜態(tài)初始化。如果在靜態(tài)初始化過程中調(diào)用了后者呢?!你可以編寫一個代碼來測試它:

輸出:

你可以先看到它確實是靜態(tài)初始化,但是中間有對構(gòu)造方法的調(diào)用。

雖然編譯器不報告錯誤,但此調(diào)用實際上是有風(fēng)險的。

由于靜態(tài)成員變量(如果已設(shè)置)在初始化之前調(diào)用類構(gòu)造函數(shù)(假設(shè)存在依賴關(guān)系),因此該過程實際上是不可控制的。

看看這個例子:你能想象這種輸出嗎?

因此,如果必須在靜態(tài)初始化過程中調(diào)用此類的構(gòu)造函數(shù)。

一定要注意初始化順序,準(zhǔn)確到語句。

類中的static變量什么時候初始化?

靜態(tài)變量是靜態(tài)的,因為它的地址在程序的整個生命周期中都是靜態(tài)的。也就是說,整個程序只保留一個副本。static關(guān)鍵字允許它在不同的函數(shù)調(diào)用之間保持其值。如果靜態(tài)變量的值在被訪問后發(fā)生變化,它將保留新值。如果再次訪問該變量,它將保持最新的值classA{公共:私人:}inta::I=1//必須以這種方式初始化

1。在類中,只聲明靜態(tài)變量而不定義。

2. 聲明只表示變量的數(shù)據(jù)類型和屬性,不分配內(nèi)存;定義需要分配內(nèi)存。注意:如果inta是在這樣的類中編寫的,那么它是聲明變量和定義變量的組合。

3. 靜態(tài)成員是“類級”,即與類具有相同的狀態(tài),而普通成員是“對象(實例)級”。類級成員存在于類的任何對象之前,并且由類的所有對象共享。

4. 現(xiàn)在,假設(shè)我們要實例化這個類的一個對象,會發(fā)生什么?靜態(tài)成員必須出現(xiàn)在這個對象中,對嗎?是時候定義靜態(tài)成員了嗎?這顯然不合適。因為,例如,如果另一個線程想要創(chuàng)建這個類的對象,靜態(tài)成員也應(yīng)該這樣定義。這將導(dǎo)致兩種可能的情況:1。重復(fù)定義;2。即使沒有重復(fù)的定義,也會出現(xiàn)競爭,導(dǎo)致死鎖,從而無法創(chuàng)建對象。顯然,編譯器無法做到這一點。因此,一個合理的解決方案是提前在類外定義它,然后與所有對象共享它。注意:類的靜態(tài)常量成員可以在類內(nèi)初始化。