您好,登錄后才能下訂單哦!
static
static變量
static變量也稱作靜態變量,靜態變量和非靜態變量的區別是:靜態變量被所有的對象所共享,在內存中只有一個副本,它當且僅當在類初次加載時會被初始化。而非靜態變量是對象所擁有的,在創建對象的時候被初始化,存在多個副本,各個對象擁有的副本互不影響。
static成員變量的初始化順序按照定義的順序進行初始化。
static方法
static方法一般稱作靜態方法,由于靜態方法不依賴于任何對象就可以進行訪問,因此對于靜態方法來說,是沒有this的,因為它不依附于任何對象,既然都沒有對象,就談不上this了。并且由于這個特性,在靜態方法中不能訪問類的非靜態成員變量和非靜態成員方法,因為非靜態成員方法/變量都是必須依賴具體的對象才能夠被調用。
是要注意的是,雖然在靜態方法中不能訪問非靜態成員方法和非靜態成員變量,但是在非靜態成員方法中是可以訪問靜態成員方法/變量的。舉個簡單的例子:
class MyObject{
priative static String strl-"staticProperty";
priative static str2-"property" ;
public MyObject{
}
public void print1(){
System.out.println(str1);
System.out.println(str2);
print2();
}
}
static代碼
當類被加載時,靜態代碼塊會執行,由于類只加載一次,因此靜態代碼塊只執行一次。
使用一對大括號包圍起來的若干行代碼被稱為一個代碼塊,用static關鍵字修飾的代碼塊為靜態代碼塊。
單列模式
類的構造方法使用private修飾,聲明為私有,這樣就不能被在類的外部使用new關鍵字來創建實例對象了;
在類的內部創建一個該類的實例對象,并使用靜態變量instance引用該對象,由于變量應該禁止外界直接訪問,因此使用private修飾,聲明為私有成員;
為了讓類外部能夠獲得類的實例對象,需要定義一個靜態方法getInstance(),用于返回該類實例instance,由于方法是靜態的,外界可以通過類名.方法名的方式來訪問。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。