天天看點

java中final與static,java中的關鍵字(static和final)

這篇文章不是對private,public,protected進行說明,隻要學過面向對象的程式設計,對以上三個關鍵再熟悉不過了。這裡要說的是另外兩個關鍵字---static和final。

1. static關鍵字

在我們建立一個類的執行個體時(對象),通常使用new方法,這樣這個類的資料空間才會被建立,其方法才能被調用。

但是,有時候我們希望一個類雖然可以被建立n個對象(顯然這n個對象的資料空間是不相同的),但這n個對象的某些資料是相同的,即不管這個類有多少的執行個體,這些資料對這些執行個體而言之有一份記憶體拷貝。還有這種情況,即有時希望某個方法不與包含它的類的任何執行個體(對象)聯系在一起。即使沒有建立對象,也能調用這個方法。

通過static就能實作這樣兩個目的,static關鍵字可以用于屬性和方法。

下面是Thinking in java中對static的一段精辟闡述。

當聲明一個事物是static時,就意味着這個資料或方法不會與包含它的那個類的任何對象執行個體關聯在一起。是以,即使從未建立某個類的任何對象,也可以調用其static方法或通路其static資料。

例:對于靜态屬性

class StaticTest{

public static int i = 0;

}

對于上面這個類,即使我們不建立他的執行個體,也可以引用其i屬性,引用方法很簡單在另外一個地方使用StaticTest.i即可得到這個屬性的值。

對于靜态方法

class StaticFunc{

public static int incr(int i){

i++;

return i;

}

}

在外部,可以直接使用StaitcFunc.incr(8)的方式調用這個方法。需要說明的是在static方法中藥使用外部變量時,這個外部變量也要為static類型(這點不難了解)。

2. final關鍵字

故名思義,final即最後的,最終的,不可改變的。實際上,在java中,final的作用也基本上是這樣的,其原因可能是出于效率或設計。final關鍵字可以應用于屬性,方法和類。當然在這三個方面的應用是有細微差别的。

(1)final資料

使用final資料,目的是想告訴編譯器這個資料一經初始化就不會再改變。

對于基本類型,final使數值恒定不變,一個既是static又是final的字段