網站首頁 美容小常識 享受生活 東方時尚 識真假 高奢 資訊 遊戲攻略 搞笑段子
當前位置:品位站 > 享受生活 > 心理

單例和靜態方法的區別

欄目: 心理 / 發佈於: / 人氣:2.81W
單例和靜態方法的區別

1、首先明確一下,靜態成員並不是什麼程序加載時創建並初始化的,而是類加載時進行。類的加載是第一次真正用到它的時候(拿類new實例或調用它的靜態方法)進行的,而這個加載過程需要將 class 文件中構成類的靜態和實例方法等類的成員的字節碼指令一同加載到內存中,而後要為靜態域分配存儲空間並使用靜態塊對其進行初始化(如果有的話)。在上面例子中,類加載後,所有成員(包括fun和staticfun)的字節碼指令均在內存中了,隨時等待着調用,並且靜態域 s 所佔用的存儲空間也用空引用初始化好了。

2、

從內存上來看,當第一次調用 getInstance() 方法時會創建此類的唯一實例(所謂的單例出現),其實也可以在聲明 s 時 new 它的唯一實例,將實例化延後是為了避免類加載後實例使用前內存的浪費。

3、

靜態方法線程是安全的,所謂線程安不安全