static代码块

来源:互联网 发布:迅雷极速版精简优化版 编辑:程序博客网 时间:2024/05/12 17:25
public class StaticTest{public static void main(String[] args){P p1 = new P();P p2 = new P();}}class P{static{System.out.println("static block");}public P(){System.out.println("P constructor");}}

输出为:

static blockP constructorP constructor

一般情况下,如果有些代码必须在项目启动的时候就需要执行,那么就要使用静态代码块,这种代码是主动执行的。静态代码块的任务是完成一些初始化工作。首先执行静态代码块,然后执行构造方法。

静态代码块在类被加载时候执行,而构造方法在生成对象时候执行;要想调用某个类来生成对象,首先需要将类加载到Java虚拟机上,然后由JVM加载这个类来生成对象。类的静态代码块只会执行一次,是在类被加载的时候执行的,因为每个类只会加载一次,所以静态代码块也只会执行一次;而构造方法则不然,每new一个对象的时候都会调用累的构造方法。

在继承体系中,先执行顶层类的静态代码块,然后依次执行到最底层的类的静态代码块,接着执行构造方法。


原创粉丝点击