Java中static關鍵字的作用與用法

2021-09-02 23:46:20 字數 1820 閱讀 7463

一、特點

1、static是乙個修飾符,用於修飾成員(成員變數、成員函式),被static修飾的成員稱為靜態變數或類變數。

2、static修飾的成員被所有的物件共享。

3、static優先於物件存在,因為static的成員隨著類的載入就已存在。

4、static修飾的成員多了一種呼叫方式,可以直接被類名所呼叫(類名.靜態成員)。

5、static修飾的資料是共享資料,物件中儲存的是特有的資料。

// 用static修飾的成員變數靜態變數或者叫做類變數

private static int age;

// 成員變數

private string name;

// 靜態函式,可直接用類來呼叫

public static void show()

// 成員函式,需要建立物件才可以呼叫

public void showdemo()

二、成員變數個靜態變數的區別

1、生命週期的不同

a、成員變數隨著物件的建立而存在,隨著物件的**而釋放。

b、靜態變數隨著類的載入而存在,隨著類的消失而消失。

2、呼叫方式不同

a、成員變數只能被物件呼叫。

b、靜態變數可以被物件呼叫,也可以用類名呼叫(推薦用類名呼叫)。

3、別名不同

a、成員變數也被稱為例項變數。

b、靜態變數被稱為類變數。

4、資料儲存位置不同

a、成員變數資料儲存在堆記憶體中的物件中,所以也叫物件的特有資料。

b、靜態變數資料儲存在方法區(共享資料區)的靜態區,所以也叫物件的共享資料。

public class demo 

public void showdemo()

public static void main(string args)

}

三、何時使用static

1、靜態變數:

a、當分析物件中所具備的成員變數的值都是相同時,這個成員就可以被靜態修飾。

b、只要是資料在物件中都是不同的,就是物件的特有資料,必須儲存在物件中,是非靜態的。

c、如果是相同的資料,物件不需要做修改,只需要使用即可,不需要儲存在物件中,是靜態的。

2、靜態函式:

a、函式是否用靜態修飾,就參考一點,就是該函式是否有訪問到物件中特有的資料的功能。

b、該功能是否需要訪問非靜態的成員變數,如果需要,該功能就是非靜態的。如果不需要,就可以將該功能定義成靜態的。當然,也可以定義成非靜態,但是非靜態需要被物件呼叫,而僅建立物件是沒有意義的。

3、靜態**塊:

a、隨著類的呼叫或建立例項而執行,而且只執行一次。

// 如果想讓此類成為乙個靜態類而類中需要用到一些引數需要初始化就需要靜態**塊

public class demo

// 呼叫此方法age為10name為張三(預設值)

public static void shownoen()

// 呼叫此方法會覆蓋掉預設值

public static void show(int age,string name)

public static void main(string args)

}

四、使用注意:

1、靜態方法只能訪問靜態成員(侷限性,非靜態可以訪問靜態,有可以訪問靜態)。

2、靜態方法中不可以使用this、super關鍵字。

3、主方法是靜態的。

4、由於static修飾的資料是共享資料,如果此資料在一處被修改,在使用此資料的其他物件中的資料也將被修改。

Java中static關鍵字

靜態結構的生命週期要早於非靜態結構,同時 也要晚於非靜態結構 執行結果 變數變數值 c2.nation null c2.nation china public void test2 執行結果 輸出china 內容與靜態屬性大體相同 1.靜態方法內只能呼叫本類靜態屬性或靜態方法 2.靜態方法裡面是不能...

java中static關鍵字

一 可修飾成員變數和方法 靜態函式要注意的事項 1.靜態函式可呼叫類名或物件呼叫,而非靜態函式只能使用物件呼叫。2.靜態函式可直接訪問靜態成員,但不能訪問非靜態成員。原因 靜態函式可通過類名直接呼叫,這時可能還未存在非靜態成員,因為其是根據物件生成的。二 執行順序 靜態 塊的執行順序優先於非靜態 塊...

java中static關鍵字

static 方便在沒有建立物件的情況來呼叫 可以用來修飾類的成員方法 成員變數,塊 內部靜態類 靜態匯入包 1 靜態變數 被static修飾的變數叫靜態變數 或類變數 否則為例項變數,靜態變數類載入時分配一次記憶體,可以直接類名訪問 例項變數建立物件時被初始化,存在多個副本,互不影響。2 靜態方法...