类的执行顺序

静态变量和静态方法在类加载的时候执行

1、静态块优先执行加载 并且静态块之执行一次
2、非静态块或者非静态变量其次加载
3、最后是构造器加载

如果某个对象出发执行了第一个静态块
那么其他所有的静态块都由此对象初始化执行
不要再静态块new对象

栗子:

public class Employee {

	{
		System.out.println("初始化块执行了");
	}
	static {
		Employee bb = new Employee();
		System.out.println("静态初始化块11执行了");
	}
	static {	
		System.out.println("静态初始化块22执行了");
	}
	
	public Employee() {
		System.out.println("构造方法执行了");
	}
	
}

测试类

public class Test {
	
	public static void main(String[] args) {
	
		Employee a = new Employee();
		
		Employee b = new Employee();
		
	}
}

初始化块执行了 被a里面的bb执行
构造方法执行了
静态初始化块11执行了 被a执行
静态初始化块22执行了 被a执行
初始化块执行了
构造方法执行了
初始化块执行了
构造方法执行了

本文中只出现了两个静态块的执行说明了 静态代码块只执行一次
而两个静态代码快相邻输出说明所有静态块只由第一个new出来的对象执行

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值