静态块、实例块、构造函数执行顺序

静态块、实例块、构造函数的执行顺序: 

   1.先执行静态方法块
   2.再执行实例方法块
   3. 再执行构造函数块

同一个类下不管new多少次,该类下的静态块只运行一次(但是一次可以执行多个)

不管是new几个类,所有的类都先运行静态方法快,(执行完所有类的静态块后)再运行实例方法快,再运行构造函数

public class Kuai {
public static void main(String[] args) {
		KuaiTest t = new KuaiTest();
		KuaiTest t1 = new KuaiTest("名字");
		KuaiTest t2 = new KuaiTest("18");
	}
}
	class KuaiTest{
		private String name;
		private int id;
	public KuaiTest() {
		System.out.println("构造方法");
	}
	public KuaiTest(String name) {
		this.name = name;
		System.out.println(this.name);
	}
	public KuaiTest(int id) {
		this.id = id;
		System.out.println(this.id);
	}
	static {
		System.out.println("静态方法块1");
	}
	static{
		System.out.println("静态方法块2");
	}
	{
		System.out.println("实例方法块1");
	}
	{
		System.out.println("实例方法块2");
	}
}

运行结果: 

 一个类可以有多个静态方法块、实例块、构造函数。

public class A {
  static {
	  System.out.println("A类的静态块");
  }
  public A() {
	  System.out.println("A类的构造函数块");
  }
  {
	  System.out.println("A类的实例方法块");
  }
}
public class B extends A{
  
	static {
		System.out.println("B类的静态块");
	}
	public B() {
		System.out.println("B类的构造函数块");
	}
	{
		System.out.println("B类的实例方法块");
	}
	public static void main(String[] args) {
		A a = new A();
		System.out.println("--------------------");
		A b = new B();
		System.out.println("--------------------");
		B c = new B();
	}
}

猜你喜欢

转载自blog.csdn.net/zxl1148377834/article/details/82708941
今日推荐