静态代码块和非静态代码块

 

相同点:两者都是在jvm加载类,构造方法执行之前执行,在类中可以定义多个,执行顺序为定义的顺序,一般在代码块中给静态成员赋值,静态代码块和静态成员变量执行顺序根据书写顺序来决定,非静态代码块在静态成员变量后执行

不同点:静态代码块只执行一次,在类加载时自动执行的,非静态代码块每new一次对象就会执行一次

 

静态代码块只执行一次 ,非静态代码块没new一次对象就会执行一次

静态代码块是在类加载时自动执行的,非静态代码块是在创建对象时自动执行的代码,不创建对象不执行该类的非静态代码块

public class Demo01 {


    public static  Integer i;

    {
        System.out.println("非静态代码块");
    }

    static{
        System.out.println("静态代码块");
    }

    public  Demo01(){
        System.out.println("构造方法执行");
    }
    public static void main(String[] args) {
        System.out.println("main");
       Demo01 demo01 = new Demo01();
       Demo01 demo011 = new Demo01();

    }
}

  

代码结果:

 

 

 

posted @ 2019-12-04 21:46  我好难啊upup  阅读(434)  评论(0编辑  收藏  举报