Java里static作用有哪些?
Java基礎內容里static占據著重要的篇幅,雖然開發中使用static的機會并不多,但是對于static的理解對掌握Java語言卻很重要,尤其在資源加載的過程中。
對于static的理解分為兩個層面,第一個層面就是關于static在JVM中的定義,第二個層面就是關于static在代碼編寫中的規則。
static在JVM中的定義決定了static在使用過程中的特點,關于staic在JVM中的定義主要就是存儲區域的定義,這是導致一系列static應用特征的根本原因(關于JVM的存儲方式的描述我在之前的文章中已經闡述過了,在此就不再贅述,感興趣的朋友可以關注我并查看之前的文章)。
static在編程中的規則是每個Java程序員都應該掌握的,簡單的說可以分成4個部分,下面分別做一個描述。
第一部分:static修飾屬性。static修飾的屬性稱為靜態屬性或者是類屬性,有以下幾個特點:
static只能修飾成員屬性,不能修飾局部屬性。
static修飾的屬性能夠在同一個類的對象間共享。
static修飾的屬性隨著類的加載而加載,可以用類名直接訪問。
看一個例子:
第二部分:static修飾方法。static修飾的方法稱為類方法或靜態方法,有以下幾個特點:
static方法可以通過類的名字直接訪問。
static方法無this,也就是說在static方法中不能使用this關鍵字。
static方法不能被非static方法覆蓋。
static方法不能直接訪問外部非static方法或屬性。
看一個例子:
第三部分:static修飾類。static可以修飾內部類,使用static修飾的內部類自動升級為頂級類,可以直接創建對象并可以在其內部定義static方法??匆粋€例子:
第四部分:static修飾塊。static塊隨著類的加載而加載,但是只加載一次,是一種介于構造方法和普通方法之間的一種應用??匆粋€例子:
通過以上的描述,相信大家對static的使用已經有了一個大致上的理解,有一點需要注意,那就是在Web開發中,一定要慎用static修飾符。
我使用Java多年,也出版過Java編程書籍,我會陸續在頭條寫一些關于Java開發方面的文章,感興趣的朋友可以關注我,相信一定會有所收獲。
如果有Java開發方面的問題,也可以咨詢我。
謝謝!