静态代码块

 

      代码块的优先级要比构造函数高,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
无参构造方法
相关文章
相关标签/搜索