java基础之代码块
分为静态代码块和构造代码块。
1.静态代码块:
static { System.out.println("静态"); }
每个类加载的时候执行,且执行一次。
2.构造代码块
{ System.out.println("构造代码块"); }
就是每个类new的时候执行,且执行一次。也就是说,调用这个类的构造方法的时候执行。
可能你觉得,这有什么用,跟写在构造方法里不是一回事儿吗?
其实不然,如果有多个构造方法呢?这个代码块编译后,会在每个构造方法里存在,且优先于构造函数里面的方法执行。
3.父类子类都有静态代码块和构造代码块的执行顺序
父类静态代码块-子类静态代码块-父类构造代码块-父类构造函数-子类构造代码块-子类构造函数。
为什么父类构造函数优先于子类构造代码块呢?
因为编译成class文件后,构造代码块是放在构造函数当中的。