先看**:
1public
class
test 7}
89class
singleton
1920
public
static
int i2 = 0;
2122
public
static
singleton getinstance()
2526 }
執行結果是
i1:1
i2:0
process finished with exit code 0
**分析:
整個執行過程,分為載入、鏈結、初始化,主要分析鏈結和初始化階段**的邏輯
分配記憶體,並且將其初始化為預設值,在這裡,singleton類的執行流程是
a.為i1分配記憶體,並且初始化為預設值0
b.為singleton分配記憶體,並且初始化為null
c.為i2分配每次,並且初始化為預設值0
2.初始化階段,由於執行了singleton.getinstance()方法,是對singleton類的主動呼叫,會進行singleton類的初始化(初始化會做的事情:為類的靜態成員變數賦予正確的初始值)的過程為:
a.i1置為初始值,這裡i1沒有主動賦值,跳過
b.singleton置為初始值,這裡是new乙個物件,並且,這時候物件的i1為主動賦值之後的值(0),i2是分配的預設值(0),進行自增操作以後,i1=1 i2=1
c.i2置為初始值,這裡是0,所以,到這裡 i1=1 i2=0
python類靜態變數
python的類靜態變數直接定義在類中即可,不需要修飾符,如 class test stc attr 1def init self,attr1,attr2 self.attr1 attr1 self.attr2 attr2 在類test中,stc attr是屬於類test的靜態變數,attr1和at...
類靜態變數 問題
類的靜態成員變數 記憶體分配方式有三種 1 從靜態儲存區域分配。內存在程式編譯的時候就已經分配好,這塊內存在程式的整個執行期間都存在。例如全域性變數,static變數。2 在棧上建立。在執行函式時,函式內區域性變數的儲存單元都可以在棧上建立,函式執行結束時這些儲存單元自動被釋放。棧記憶體分配運算內置...
C 類的靜態變數
1.必須學好英文。乙個簡單有力的理由就是查閱資料時可以不侷限於中文。2.msdn很強大,前提是必須掌握好英文。c 類的靜態變數屬於類,而不屬於類的物件。但類的物件可以使用它。如果有多個物件,則他們共享該靜態變數。類的靜態變數在類中宣告,在類外定義,即在類外賦值。最好不要在標頭檔案中定義變數,因為可能...