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

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

   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();
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值