static 修飾符 作用(靜態(tài)的只能訪問靜態(tài)的)
static表示靜態(tài)的,可以用來修飾成員變量和方法,也可以形成靜態(tài)代碼塊。被static修飾的成員變量和方法獨立于該類的任何對象,也就是說不依賴類特定的實例,被類的所有實例共享。static優(yōu)先于對象存在,因為static成員隨類的加載就已經(jīng)存在了。
1.static修飾變量:
被static修飾叫做靜態(tài)變量或者是類變量; 沒有被修飾的叫做實例變量;
每個對象都共有的屬性就可以設置為static,被修飾的成員被所有的實例共享, 且可以直接用類名調(diào)用。
2.static修飾方法
靜態(tài)方法只能訪問靜態(tài)成員(非靜態(tài)既可以訪問靜態(tài)也可以訪問非靜態(tài))
靜態(tài)方法中不可以使用this或者super關鍵字,(對象不存在,因為this是指向當前的對象,但是靜態(tài)方法屬于類,這個時候?qū)嵗€不存在;因為靜態(tài)方法是優(yōu)先于對象存在,而且可以直接類名.調(diào)用)
3.static修飾代碼塊:
靜態(tài)代碼塊隨著類的加載而運行,而且只運行一次
作用:用于類的初始化
static代碼塊是類加載時,初始化自動執(zhí)行的。如果static代碼塊有多個,JVM將按照它們在類中出現(xiàn)的先后順序依次執(zhí)行它們,每個代碼塊只會被執(zhí)行一次;當類中的變量全部是靜態(tài)的時候才用靜態(tài)代碼塊去初始化變量。
PS: ,一般的類是沒有static的,只有內(nèi)部類可以加上static來表示嵌套類。
final修飾
final
定義變量,包括靜態(tài)的和非靜態(tài)的。 final變量即為常量,只能賦值一次(一旦初始化便不可改變,對基本類型來說是常量,對象變量來說其引用不可變;且必須是顯示初始化,在申明或者是在構造方法中);注意:這里需要提醒大家注意的是,不可改變的只是這個變量所保存的引用,并不是這個引用所指向的對象。
定義方法的參數(shù)。
定義方法。final方法不能被子類重寫;
定義類。 final類不能被繼承。(例如String就是final)
static和final一塊用表示什么
static final用來修飾成員變量和成員方法,可簡單理解為“全局常量”!
對于變量,表示一旦給值就不可修改,并且通過類名可以訪問。
對于方法,表示不可覆蓋,并且可以通過類名直接訪問。