JAVA中的static關鍵字

2021-08-01 11:38:16 字數 1976 閱讀 7857

當在定義類的時候,類中都會有相應的屬性和方法。而屬性和方法都是通過建立本類物件呼叫的。當在呼叫物件的某個方法時,這個方法沒有訪問到物件的特有資料時,方法建立這個物件有些多餘。可是不建立物件,方法又呼叫不了,這時就會想,那麼我們能不能不建立物件,就可以呼叫方法呢?

可以的,我們可以通過static關鍵字來實現。static它是靜態修飾符,一般用來修飾類中的成員。

a: 被static修飾的成員變數屬於類,不屬於這個類的某個物件。(也就是說,多個物件在訪問或修改static修飾的成員變數時,其中乙個物件將static成員變數值進行了修改,其他物件中的static成員變數值跟著改變,即多個物件共享同乙個static成員變數)

b: 被static修飾的成員可以並且建議通過類名直接訪問

訪問靜態成員的格式:

類名.靜態成員變數名

類名.靜態成員方法名(引數

)c: 靜態的載入優先於物件,隨著類的載入而載入

案例**1

package com.itheima_01;

/* * static:是乙個關鍵字,用於修飾成員變數和成員方法

* static的特點:

* 被所有的物件所共享

* 可以使用類名呼叫

* 靜態的載入優先於物件

* 隨著類的載入而載入

* */

public class staticdemo

}class person

}

a:靜態成員只能直接訪問靜態成員,靜態中不可以訪問非靜態

b:非靜態成員既可以訪問非靜態成員也可以訪問靜態成員

案例**2

package com.itheima_01;

/* * static的注意事項:

* 靜態方法:

* 可以呼叫靜態的成員變數

* 可以呼叫靜態的成員方法

* 不可以呼叫非靜態成員變數

* 不可以呼叫非靜態成員方法

* 靜態方法只能呼叫靜態的成員

* 非靜態方法:

* 可以呼叫靜態的成員變數

* 可以呼叫靜態的成員方法

* 可以呼叫非靜態的成員變數

* 可以呼叫非靜態的成員方法

*

* 靜態的方法中是否有this這個物件?沒有的

*

* */

public class staticdemo2

}class student

public static void sleep()

public void eat()

}

a:靜態優點:

對物件的共享資料提供單獨空間的儲存,節省空間,沒有必要每乙個物件都儲存乙份

可以直接被類名呼叫,不用在堆記憶體建立物件

靜態成員可以通過類名直接訪問,相對建立物件訪問成員方便

b:靜態弊端:

訪問出現侷限性。(靜態雖好,但只能訪問靜態)

Java中static關鍵字

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

java中static關鍵字

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

java中static關鍵字

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