1. 程式人生 > >關於Java中的static關鍵字

關於Java中的static關鍵字

Java中的 static 關鍵字主要是用來做記憶體管理的。

static 主要修飾一下四種情況:
變數(所謂 class variable)
方法(所謂 class method)
程式碼塊(所謂 block)
內部類(所謂 nested class)
凡是被 static 修飾的這四種元素,都屬於class的元素,即類的,而不是類的例項的。

1. 靜態變數
靜態變數被該類的所有例項鎖共享,好處就是記憶體利用率高,比如很多物件具有相同的一個屬性,那這可以將這個屬性設為靜態變數,減少許多無用的建立、初始化等。還有的好處就是例項共同操作某一變數,可以完成像“計算”的這種整體操作。
2. 靜態方法


在宣告方法的時候加上 static 關鍵字,即靜態方法。靜態方法可以直接通過 類名.方法名 呼叫,而不需要建立類的物件。靜態方法常常為應用程式中的其它類提供一些實用工具所用,避免了先要new出物件的繁瑣和資源消耗。
3. 靜態程式碼塊
用來初始化靜態變數,且這一動作發生在new一個物件之前,也就是static修飾的成員變數首先被初始化,隨後是普通成員。static修飾的類成員,在程式執行過程中,只需要初始化一次即可,不會進行多次的初始化。
4. 靜態內部類
被static修飾的類,並且處於某個類的內部,就是靜態內部類。作用:它可以訪問外部類的靜態成員,包括private成員。靜態內部類不僅高效利用記憶體,而且使得程式碼簡潔。例子如下:

class TestOuter1{  
  static int data=30;  
  static class Inner{  
   void msg(){System.out.println("data is "+data);}  
  }  
  public static void main(String args[]){  
  TestOuter1.Inner obj=new TestOuter1.Inner();  
  obj.msg();  
  }  
}

Output:data is 30
因為這裡的Inner類是static的,並沒有建立外部類的例項,就可以訪問外圍類的static成員。如果把Inner之前的static去掉,就需要先建立一個外部類例項,才能建立內部類例項。