在Java中会经常用到静态代码块和构造方法,但是还有一种代码块叫构造代码块,用的比较少,但是在面试时会因为代码块执行顺序而提到。
静态代码块,只在类加载时执行一次,多个静态代码块执行顺序取决于它在代码中的位置,先定义的先执行,最常用的场景就是加载native库
static {
System.loadLibrary("zhixing");
}
构造代码块,每次创建实例时都会执行,多个构造代码块执行顺序也取决于它在代码中的位置,先定义的先执行,它和构造方法执行时机不同的是,如果有多个构造方法,创建实例时只会调用其中一个构造方法,而构造代码块始终都会调用。不过我们可以在构造方法里面调用另外一个构造方法,或者调用统一的初始化方法,来实现构造代码块的功能,而且更加直观。
首先明确一点,静态代码块是在类加载时执行的,而构造方法和构造代码块是在创建实例时才执行,所以静态代码块肯定比后两者先执行,下面看看示例。