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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章