1. 程式人生 > >Java中static講解

Java中static講解

提及到static關鍵字我們知道它可以修飾類、方法、屬性、程式碼塊。static關鍵字最大的作用就是在沒有建立任何物件的情況下,也能通過類名來呼叫static方法。這是static方法的主要用途。

一、使用static關鍵字注意的幾點

  1):靜態方法不能使用非靜態的變數和呼叫非靜態的方法,反過來是可以的。因為非靜態方法/變數是必須依賴具體的物件才能夠執行。

  2):靜態方法是不依賴任何物件進行訪問的,所以靜態方法沒有this

  3):非靜態方法中可以訪問靜態方法和變數。

二、靜態變數和成員變數的區別

  1):被static修飾的變數叫靜態變數,它是被物件所共享的,在記憶體中只存在一個副本,類一載入的時候就初始化。

非靜態變數是被物件所擁有的,記憶體中存在多個副本且互不影響,只有在建立物件的時候才能被初始化。

  2):靜態變數和程式碼塊的載入順序是按其定義的順序依次載入的。

三、靜態程式碼塊

  static {
      //靜態程式碼塊內容
}

以上格式就是一個靜態程式碼塊,靜態程式碼塊是可以出現在類的任何一個地方,一個類中可以存在多個靜態程式碼塊,靜態程式碼塊在類一載入的時候就被初始化,初始化的順序是根據靜態程式碼塊定義的順序有關,按static塊順序依次執行。

  2):靜態程式碼塊的作用:

講靜態程式碼塊的作用之前我們來看一個例子:

  1):沒有使用靜態程式碼塊之前

  2):使用靜態程式碼塊之後

在上面這個獲取系統當前時間的例子中,如果很多地方需要獲取系統當前時間,我們每次都得呼叫這個方法,在每次呼叫的時候,都會建立一個SimpleDateFormat的物件sim,和一個new Date()這樣會造成資源消耗。但是我們使用了靜態程式碼塊後,我們始終只需要建立一個sim 和一個new date(),這樣減少了系統資源浪費。一定程度上提升了效能。所以我們建議將只需要一次性初始化的操作都放在靜態程式碼塊中進行操作。