静态代码块和非静态代码块区别

来源:互联网 发布:神庙逃亡2数据恢复 编辑:程序博客网 时间:2024/06/05 00:54

静态代码块在第一次创建对象的时候执行一次,之后再也不执行。
非静态代码块每创建一次对象就执行一次。

class Cat{    Cat(){        System.out.println("构造代码块");    }    static{        System.out.println("静态代码块");    }    {        System.out.println("非静态代码块");    }}public class TestStatic{    public static void main(String[] args) {        new Cat();        System.out.println("==========分隔符================");        new Cat();    }}

执行结果

静态代码块
非静态代码块
构造代码块
==========分隔符================
非静态代码块
构造代码块

当调用一个类里面的静态方法的时候,静态代码块也会执行
例子

class Cat {    Cat() {        System.out.println("构造代码块");    }    static void f() {        System.out.println("测试静态代码块会不会执行");    }    static {        System.out.println("静态代码块");    }    {        System.out.println("非静态代码块");    }}public class TestStatic {    public static void main(String[] args) {        Cat.f();    }}

执行结果
静态代码块
测试静态代码块会不会执行

注意程序的唯一入口main方法也是静态方法
它同样也遵循静态方法的规则,所以它由系统在创建对象之前就调用.

原创粉丝点击