Java 静态代码块讲解

结合《Thinking in Java》讲一讲自己对静态代码块的理解。Java静态代码块就是一段跟在static关键字后面的代码,用来将多个静态初始化动作组织成代码块,并且每个类的static代码块仅会执行一次。在以下两种情况下static代码块会被执行:

情况1:当首次生成这个类的一个对象时。

情况2:首次访问属于这个类的静态数据成员时。

public class ExplicitStatic {
    public static void main(String[] args) {
        new Cups();              //①
        Cup cup = Cups.cup1;     //②
    }
}

class Cup {

    Cup(int i) {
        System.out.println("执行cup" + i + "的构造方法");
    }

}

class Cups {

    static Cup cup1;
    static Cup cup2;

    static {
        System.out.println("执行static代码块");
        cup1 = new Cup(1);
        cup2 = new Cup(2);
    }
}  


main方法中单独执行语句①,触发 情况1。单独执行语句②,触发 情况2。二者控制台结果皆为:

执行static代码块
执行cup1的构造方法
执行cup2的构造方法

当同时执行语句①②时,控制台结果依然为:

执行static代码块
执行cup1的构造方法
执行cup2的构造方法

说明static代码块在同一个类中仅执行一次。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值