提綱
- static修飾成員變量
- static修飾成員變量的應用場景
- static修飾成員方法
- static修飾成員方法的應用場景
- static的注意事項
- static的應用知識:代碼塊
- static的應用知識:單例設計模式
static靜態的意思,可以修飾成員變量,成員方法;
- static修飾成員變量:
1.有static修飾的成員變量叫做類變量;
a.類名.變量名 (推薦這樣進行調用);
b.類變量與類一起加載一次,內存中只有一份,被所有對象共享;
c.在本類中訪問類變量可以省略類名,訪問其他類的類變量不能省略;
- static修飾成員變量的應用場景
在開發中如果某個數據只需要一份,并且可以被共享(訪問,修改),可以將其定義為類變量;
案例:
注意:在本類訪問類變量可以省略類名,其他類中不可以;
-
static修飾成員方法
static修飾成員方法叫做類方法;
a.類方法可以使用類名直接調用(推薦調用方法);
b.靜態方法只能調用靜態的方法;
c.類方法中可以直接訪問類成員,不能訪問實例成員;
d.實例方法中既可以訪問類變量,也可以訪問實例變量;
e.實例方法中可以出現this關鍵字,類方法中不能出現this關鍵字;
(靜態方法中不能用this關鍵字,因為this是個引用,哪個對象調用方法就引用哪個對象。 而靜態方法有可能不是被對象調用的,this無從引用。類方法是屬于類本身的 所有對象共享 this表示當前實例的引用 靜態方法中不能引用非靜態實例成員); -
應用
類方法常用于工具類(until)(為了防止創建對象浪費內存,其次為了方便調用)
- 擴展-工具類
a.工具類的方法都是類方法,方便調用,每個類方法用來完成一個功能;
b.類名見名知意,空參構造私有化;
- static修飾代碼塊
代碼塊是類的5大成分之一(成員變量、構造器、方法、代碼塊、內部類)
static修飾的代碼塊是靜態代碼塊
格式:static { }
特點:類加載時自動執行,由于類只會加載一次,所以靜態代碼塊也只會執行一次。
作用:完成類的初始化,例如:對類變量的初始化賦值。
實例代碼塊:
格式:{ }
特點:每次創建對象時,執行實例代碼塊,并在構造器前執行。
作用:和構造器一樣,都是用來完成對象的初始化的,例如:對實例變量進行初始化賦值。
static的應用
設計模式(Design pattern) ?
一個問題通常有n種解法,其中肯定有一種解法是最優的,這個最優的解法被人總結出來了,稱之為設計模式。
設計模式有20多種,對應20多種軟件開發中會遇到的問題。
單例設計模式(確保類只有一個對象)
餓漢
把類的構造器私有。
定義一個類變量記住類的一個對象。
定義一個類方法,返回對象。
懶漢
class RunTime{//1.私有化的空參構造private RunTime(){}//2.類變量記錄一個對象,不做初始化private static RunTime runTime;//3.定義一個類方法,判斷返回值public static RunTime getObiect(){if(runTime == null){runTime = new RunTime();}return runTime;}}