從頭認識java 4 7 構造器初始化(2)

2021-09-02 12:45:31 字數 1647 閱讀 5115

這一章節我們接著上一章節的內容。

(3)靜態資料的初始化

a.靜態資料只會執行一次

package com.ray.testobject;

public class test

public static void main(string args)

}class book

public void say()

}

輸出:create book:1

create book:2

create test

hi, my name is book-1

hi, my name is book-2

create book:3

hi, my name is book-3

create test

hi, my name is book-1

hi, my name is book-2

create book:3

hi, my name is book-3

從結果可以看見,book1和book2只在第一次建立test的時候建立了一次,然後再次建立test時就不再建立book1和book2。

b.如果不被引用或者不new,物件裡面的靜態屬性域不會建立。

我們修改一下上面的**:

package com.ray.testobject;

public class test

public static void main(string args)

}class book

public void say()

}class groupofbooks

}

上面的**是不會執行new book(99)這一行的。

我們再進行修改,給出兩種執行new book(99)的例子:

package com.ray.testobject;

public class test

public static void main(string args)

}class book

public void say()

}class groupofbooks

}

package com.ray.testobject;

public class test

public static void main(string args)

}class book

public void say()

}class groupofbooks

}

上面兩段**同樣輸出:

create book:99

這裡總結一下物件建立的過程:

1.查詢.class檔案的路徑

2.載入.class檔案,執行物件的靜態方法或者靜態屬性域

3.new物件,然後分配記憶體空間(記憶體空間清零,則物件**,引用變成null)

4.執行屬性域初始化

5.執行構造器

總結:這一章節主要討論了靜態屬性域的初始化。

這一章節就到這裡,謝謝。目錄

構造器初始化

構造器初始化 1.初始化順序 即使變數定義分散於方法定義之間,它仍會在任何方法 包括構造器 被呼叫之前得到初始化。變數定義的先後順序決定了初始化的順序 例 package clear class window class house window w2 new window 2 void f win...

C 初始化器和建構函式初始化器

初始化器分為物件初始化器和集合初始化器。下面一一介紹。物件初始化器 物件初始化器的作用,簡單點說就是可以使我們初始化乙個類的 變得更簡潔。比如下面這個類 class person public int age public string address 我們要初始化它並對它賦值的話通常要這樣 per...

構造器的初始化

可以用構造器來進行初始化。在執行時刻,你可以呼叫方法或執行某些動作來確定初值,這 為你在程式設計時帶來了更大的靈活性。但要牢記 你無法遮蔽自動初始化的進行,它將在構造 器被呼叫之前發生。因此,假如使用下述 class counter 那麼i首先會被置 0,然後變成 7。對於基本型別和物件引用,包括在...