1. 程式人生 > >java變數初始化順序

java變數初始化順序

在類的內部,變數定義的先後順序決定了初始化順序,即使變數定義分散在方法定義之外,它們依舊會在任何方法(包括構造器)被呼叫之前得到初始化

其中初始化的順序先是靜態物件,其後是非靜態物件

例如:

class Cat{
    private Dog dog1=new Dog(1);
    static private Dog dog2=new Dog(2);
    public Cat(int n){
        System.out.println("第"+n+"只貓");
    }
}
class Dog{
    public Dog(int n){
        System.out.println("Dog("+n+")");
    }
}
public class TestStatic {
    public static void main(String[] args) {
        System.out.println("test...");
        Cat cat=new Cat(1);
    }
}  

執行結果:

test...
Dog(2)
Dog(1)
第1只貓

cat類和dog類構造器中列印資訊為了看初始化資訊

在main方法中,建立了一個Cat類,除構造方法外,有兩個物件,一個是靜態dog,另外一個是dog,因為靜態物件有先初始化,所以先打印出Dog(2),其後才是Dog(1)

最後才呼叫cat的構造方法,打印出cat(1)

非靜態例項初始化

{}裡初始化的內容在構造器之前執行,且每次生成該類{}將會重新被初始化