java 中静态代码和非静态代码块的区别!

来源:互联网 发布:一叶落而知秋 编辑:程序博客网 时间:2024/05/16 18:27
相同点:都是在JVM加载类时且在构造方法执行之前执行,在类中都可以定义多个,    一般在代码块中对一些static变量进行赋值。不同点:静态代码块在非静态代码块之前执行(静态代码块—>非静态代码块—>构造方法)。    静态代码块只在第一次new执行一次,之后不再执行,而非静态代码块在每new    一次就执行一次。非静态代码块可在普通方法中定义(不过作用不大);而静态代码块不行。例: //普通类public class PuTong {    public PuTong(){        System.out.print("默认构造方法!-->");    }        //非静态代码块    {        System.out.print("非静态代码块!-->");    }        //静态代码块    static{        System.out.print("静态代码块!-->");    }        public static void test(){        {            System.out.println("普通方法中的代码块!");        }    }}//测试类public class TestClass {        /**     * 区别两次new静态与非静态代码块执行情况     */    public static void main(String[] args) {        PuTong c1 = new PuTong();        c1.test();                PuTong c2 = new PuTong();        c2.test();    }}/*运行输出结果是:静态代码块!-->非静态代码块!-->默认构造方法!-->普通方法中的代码块!非静态代码块!-->默认构造方法!-->普通方法中的代码块!*/
0 0
原创粉丝点击