Java的類中的數據成員中包含有靜態成員(static)時,靜態數據成員的初始化順序是怎樣的呢?java
【程序實例1】函數
import java.util.*; import java.lang.*; import java.io.*; /* Name of the class has to be "Main" only if the class is public. */ class Bowl { Bowl(int marker) { System.out.println("Bowl("+marker+")"); } void f1(int marker) { System.out.println("f1("+marker+")"); } } class Table { static Bowl bowl1=new Bowl(1); Table() { System.out.println("Table()"); bowl2.f1(1); } void f2(int marker){ System.out.println("f2("+marker+")"); } static Bowl bowl2=new Bowl(2); } class Cupboard { Bowl bowl3=new Bowl(3); static Bowl bowl4=new Bowl(4); Cupboard() { System.out.println("Cupboard()"); bowl4.f1(2); } void f3(int marker) { System.out.println("f3("+marker+")"); } static Bowl bowl5=new Bowl(5); } class Ideone { public static void main (String[] args) //throws java.lang.Exception { System.out.println("Creating new Cupboard() in main"); new Cupboard(); System.out.println("Creating new Cupboard() in main"); new Cupboard(); table.f2(1); cupboard.f3(1); } static Table table=new Table(); static Cupboard cupboard=new Cupboard(); }
【運行結果】spa
Bowl(1) Bowl(2) Table() f1(1) Bowl(4) Bowl(5) Bowl(3) Cupboard() f1(2) Creating new Cupboard() in main Bowl(3) Cupboard() f1(2) Creating new Cupboard() in main Bowl(3) Cupboard() f1(2) f2(1) f3(1)
從上面的執行結果能夠看出:code
在初始化變量時,Java中static數據成員初始化優先於局部變量,先按定義的順序初始化靜態變量,而後是局部變量,最後執行類的構造函數。blog