靜態代碼塊

 

      代碼塊的優先級要比構造函數高,new對象前先去硬盤讀取自解碼,完成類的初始化-加載靜態,而後new了對象就完成屬性方法的初始化(先加載代碼塊再加載構造方法),因此new第二個對象的時候就不會再初始化類了(不用再加載一遍靜態代碼塊)函數

public class Person {
	public final String name;
	public int age;	

	public Person() {
		System.out.println("無參構造方法");
	}

	{
		System.out.println("代碼塊2");
	}

	{
		System.out.println("代碼塊1");
		name = "小明";
	}

	static {
		System.out.println("靜態代碼塊2");
	}

	static {
		System.out.println("靜態代碼塊1");
	}

	

	public Person(int age) {
		this.age = age;
		//this.name = "";
		System.out.println("構造age方法");
	}

	public void goToSchool() {
		System.out.println(name + "goToSchool方法");
	}
}

 

public class TestPerson {
	public static void main(String args[]) {
		Person person = new Person();
		Person person2 = new Person();
	}
}





靜態代碼塊2
靜態代碼塊1
代碼塊2
代碼塊1
無參構造方法
代碼塊2
代碼塊1
無參構造方法
相關文章
相關標籤/搜索