static 主要修飾一下四種情況:
變數(所謂 class variable)
方法(所謂 class method)
**塊(所謂 block)
內部類(所謂 nested class)
凡是被 static 修飾的這四種元素,都屬於class的元素,即類的,而不是類的例項的。
1. 靜態變數
靜態變數被該類的所有例項鎖共享,好處就是記憶體利用率高,比如很多物件具有相同的乙個屬性,那這可以將這個屬性設為靜態變數,減少許多無用的建立、初始化等。還有的好處就是例項共同操作某一變數,可以完成像「計算」的這種整體操作。
2. 靜態方法
在宣告方法的時候加上 static 關鍵字,即靜態方法。靜態方法可以直接通過類名.方法名呼叫,而不需要建立類的物件。靜態方法常常為應用程式中的其它類提供一些實用工具所用,避免了先要new出物件的繁瑣和資源消耗。
3. 靜態**塊
用來初始化靜態變數,且這一動作發生在new乙個物件之前,也就是static修飾的成員變數首先被初始化,隨後是普通成員。static修飾的類成員,在程式執行過程中,只需要初始化一次即可,不會進行多次的初始化。
4. 靜態內部類
被static修飾的類,並且處於某個類的內部,就是靜態內部類。作用:它可以訪問外部類的靜態成員,包括private成員。靜態內部類不僅高效利用記憶體,而且使得**簡潔。例子如下:
class
testouter1
} public
static
void main(string args)
}
output:data is 30
因為這裡的inner類是static的,並沒有建立外部類的例項,就可以訪問外圍類的static成員。如果把inner之前的static去掉,就需要先建立乙個外部類例項,才能建立內部類例項。
關於java的synchronized關鍵字
synchronized最關鍵的就是確定鎖的物件,我認為有兩種,類和物件 對類的加鎖有兩種方法 1.public synchronized static void fun 在靜態方法前加上synchronized關鍵字。2.synchronized 類名.class 將加鎖的 塊的鎖的位置,寫上類物...
12 10java物件導向之static關鍵字
我們在程式編寫中最常出現的static 地方就是 public static void main string args 這個主方法就使用了static 關鍵字。例如,現在要定義乙個類,該類實現的是北京人的包裝。屬性包括 姓名,年齡,城市。由於所有人都是北京人,所以城市大家的屬性都是相同的。案例 本...
java中 this,final,super關鍵字
1.this關鍵字 1 this表示當前類的例項化物件。2 this呼叫本類中的屬性,如果本類中沒有此屬性,將從父類中繼續查詢。3 this呼叫本類中的方法,如果本類中沒有此方法,將從父類中繼續查詢。4 this可以呼叫本類中的構造方法。class person 呼叫自身的構造方法,這種寫法只能存在...