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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM