在自學到java面向對象時,知道有靜態代碼塊,構造代碼塊和構造函數的存在,如果說構造函數是初始化對象,那麼其他2者又是怎麼使用,又有什麼區別呢。簡單的舉了下麵的例子: 列印的結果為 所以可以看出先後順序為靜態代碼塊,構造代碼塊,構造函數。 其中靜態代碼塊只隨著類的載入載入一次,一般就用於初始化類。 ...
在自學到java面向對象時,知道有靜態代碼塊,構造代碼塊和構造函數的存在,如果說構造函數是初始化對象,那麼其他2者又是怎麼使用,又有什麼區別呢。簡單的舉了下麵的例子:
1 package 面向對象; 2 3 class Child 4 { 5 private String country; 6 private String name; 7 Child(String name)//構造函數。 8 { 9 this.name=name; 10 System.out.println(this.name); 11 } 12 static //靜態代碼塊 13 { 14 System.out.println("哈哈"); 15 } 16 {//構造代碼塊。 17 country="中國"; 18 System.out.println(country); 19 } 20 } 21 public class ChildTest 22 { 23 public static void main(String[] args) 24 { 25 Child XiaoMing=new Child("小明"); 26 Child XiaoWang=new Child("小王"); 27 } 28 }
列印的結果為
所以可以看出先後順序為靜態代碼塊,構造代碼塊,構造函數。
其中靜態代碼塊只隨著類的載入載入一次,一般就用於初始化類。
構造代碼塊每個對象出現時載入一次,不能改變,一般為初始化對象共同的固有的屬性。
構造函數每個對象出現時載入一次,可以加入參數改變變數,一般用於初始化對象的屬性。