JAVA:初始化靜態資料
阿新 • • 發佈:2018-12-29
無論建立多少個物件,靜態資料都只佔用一份儲存區域,static 關鍵字不能應用於區域性變數,因此它只作用於域。如果域是靜態的基本型別域,且也沒有對它進行初始化,那麼它就會獲得基本型別的標準值;如果是一個物件的引用,預設初始值為Null;
初始化順序參照下面例子,類名StaticInitialization:
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); } public class StaticInitialization { public static void main(String[] args) { // TODO Auto-generated method stub 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(); } /* Output: 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) *///:~