Java中的静态块(static{})

静态块(static{})

(1) static关键字还有一个比较关键的作用,用来形成静态代码块(static{} 即static块 )以优化程序性能。

(2) static块可以置于类中的任何地方,类中可以有多个static块。

(3) 在类初次被加载的时候执行且仅会被执行一次(这是优化性能的原因!!!),会按照static块的顺序来执行每个static块,一般用来初始化静态变量和调用静态方法。

下面通过两段代码,说明 static{} 为什么能优化程序性能。

实例

/**
 * 每次调用isBornBoomer的时候
 * 都会生成startDate和birthDate两个对象,造成了空间浪费
 */
class Person{
    private Date birthDate;
     
    public Person(Date birthDate) {
        this.birthDate = birthDate;
    }
     
    boolean isBornBoomer() {
        Date startDate = Date.valueOf("1997");
        Date endDate = Date.valueOf("2019");
        return birthDate.compareTo(startDate)>=0 && birthDate.compareTo(endDate) < 0;
    }
}
/**
 * 这里使用了static块
 * 只需要进行一次的初始化操作
 * 节省内存空间,优化性能
 */
class Person{
    private Date birthDate;
    private static Date startDate,endDate;
 
    static{
        startDate = Date.valueOf("1997");
        endDate = Date.valueOf("2019");
    }
     
    public Person(Date birthDate) {
        this.birthDate = birthDate;
    }
     
    boolean isBornBoomer() {
        return birthDate.compareTo(startDate)>=0 && birthDate.compareTo(endDate) < 0;
    }
}

注意:强调一下static块是会按照顺序执行,与main入口函数无关。

参考

[1] https://blog.csdn.net/qq_41647999/article/details/87966487

Top
收藏
关注
评论
原文地址:https://www.cnblogs.com/JasonCeng/p/15532604.html