※ 引述《gn00618777 (非常念舊)》之銘言:
: 類別(class)中可以有static 程式區塊,static 程式區塊在類別第一次被載入後只會
: 被執行一次,此區塊在類別變數初始化之前執行。
: 書上只淺淺的一行帶過...
: 所以...類別是會被載入之後再載出,重複載入的意思囉?
: 還有這 static block 的使用時機是啥阿? 謝謝。
這邊主要有兩個概念
Classloader和Initializing Fields
Classloader
java Classloader是Java運行時環境的一部分,
負責動態載入Java類到Java虛擬機的內存空間中。
類通常是按需載入,即第一次使用該類時才載入。
(引自維基百科)
為了空間效能等等,通常是需要時才載入
不必要時也可能載出
所以是會有重複載出載入的情形
static block
static block主要是用來當Initializing Field使用
也就是初始化使用static member使用
而使用時機可能是
1.需要載入共用資源
2.下載.讀取一些共用資料
參考資料:
http://en.wikipedia.org/wiki/Java_Classloader
http://docs.oracle.com/javase/tutorial/java/javaOO/initial.html