靜態代碼塊只執行一次。
構造代碼塊在每一次構造對象的開始執行,每構造一次都會執行一次。其與構造函數的區別是構造代碼塊無論針對所有的對象初始化都會執行,構造函數只會和相匹配的函數一致時才會執行。
下面為靜態代碼例子
class StaticCode { static { System.out.println("I'm staticcode"); } void show() { System.out.println("show run"); } } class StaticCodeDemo { public static void main(String[] args) { new StaticCode().show(); new StaticCode().show(); } } ///結果 //I'm staticcode //show run //show run
下面是構造代碼塊的例子
class Person { String name; //構造函數的代碼塊 { System.out.println("哇啊"); } Person() { name="baby"; show(); } Person(String name) { this.name=name; show(); } void show() { System.out.println("name"+name); } } class StaticConstructor { public static void main(String[] args) { Person p1=new Person(); Person p2=new Person("旺財"); } } //哇啊 //namebaby //哇啊 //name旺財