java變數初始化順序
阿新 • • 發佈:2018-11-12
在類的內部,變數定義的先後順序決定了初始化順序,即使變數定義分散在方法定義之外,它們依舊會在任何方法(包括構造器)被呼叫之前得到初始化
其中初始化的順序先是靜態物件,其後是非靜態物件
例如:
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)
非靜態例項初始化
{}裡初始化的內容在構造器之前執行,且每次生成該類{}將會重新被初始化