1. 程式人生 > >Java的欄位初始化規律

Java的欄位初始化規律

package 程式碼測試;

public class InitializeBlockClass {
    {field=200;}
    public int field=100;
    public InitializeBlockClass(int value) {
        this.field=value;
    }

    public InitializeBlockClass() {
        
    }
}
public class obj {
    public static void main(String[] args) {
        InitializeBlockClass obj
=new InitializeBlockClass(); System.out.println(obj.field); obj=new InitializeBlockClass(300); System.out.println(obj.field); } }

輸出結果為:100 300

分析

1  {field=200;} 該部分為類的初始化模組,在類中直接將語句包圍起來,直接作為類成員,像這種成員多用與初始化類的欄位。

2  在 public int field=100; 定義時初始化,所以obj.field值為100

obj=new InitializeBlockClass(300);
        System.out.println(obj.field);

利用構造方法初始化,將field的值初始化為300,輸出為300;

4 Java欄位初始化的規律:

靜態初始化生成例項(new之後)變成你賦給他的值,先執行靜態初始化,如果沒有例項化,按照初始化和構造方法在程式中出現的順序執行。

當多個類之間有繼承關係時,建立子類物件會導致父類初始化塊的執行。