静态初始块和非静态初始块有什么区别?
非静态初始块主要用于对象的初始化操作,在每一次创建对象时都要调用一次,其执行顺序在构造方法之前。
如果初始化块前有static关键字修饰,那么该初始块称为静态初始块。由于非静态成员不能再静态方法中使用,同样也不能在静态初始块中,因此,静态初始块主要用于初始化静态变量和静态方法。静态初始块只调用一次,是在类被第一次加载到内存时,并非一定要创建对象才执行。
静态初始块的执行顺序是在非静态初始块之前,因此比非静态初始块执行的要早。
public class Tset01 {
public static void main(String[] args) {
T a=new T();
T a1=new T();
}
}
class T{
{
System.out.println("非静态初始化块");
}
static {
System.out.println("静态初始化块");
}
public T() {
System.out.println("无参的构造方法");
}
}
``