四 static關鍵字

2021-08-14 00:09:01 字數 2171 閱讀 2118

1.static關鍵字是用來修飾:

類中的 成員變數:

類中的成員方法:

**塊:

2.概述

定義乙個類時,只是在描述某類事物的特徵和行為,並沒有產生具體的資料,只有通過new 關鍵字建立該類的例項物件後,系統才會為每乙個例項物件分配空間,儲存各自的資料。有時候我們希望某些特定的資料在記憶體中只有乙份,而且能夠被乙個類的所有物件訪問到。

例如:乙個學校的「名稱」能夠被學校的所有學生共享,而不是每個學生物件的記憶體中定義乙個變數表示學校名稱,這時就可以使用staic靜態修飾公共變數,每個學生物件都可以訪問到。

3.呼叫:static修飾變數。

a.   直接使用類.變數名來訪問。

b.  new乙個類的物件,通過物件呼叫。

例項1:

定義乙個類,定義乙個靜態變數。

另一類呼叫該類裡面的靜態變數:

結果:

注意:static關鍵字只能用於修飾成員變數,不能用於修飾區域性變數,否則編譯時會報錯。

靜態變數可以被整個類訪問到。

4.static修飾方法:靜態方法:

有時候,我們希望在不建立物件的時候就可以呼叫某個方法,使用靜態方法。

乙個類裡面定義乙個靜態方法:

另一類呼叫該類裡面的靜態方法:

5.static修飾**塊:靜態**塊:

用{}包圍的成為**塊,用static修飾的成為靜態**塊。當類被載入時,靜態**塊會被執行,由於類只載入一次,所以靜態**塊只執行一次,在程式中,常使用靜態**塊對類的成員變數進行初始化。

乙個類中定義靜態**塊,並初始化成員變數:

另乙個類中,定義乙個靜態**塊,並呼叫該類中的成員變數:

結果:

載入ttest類的時候,會先載入該類的靜態**塊,在執行mian()函式,函式中建立student類物件,接著執行student類中的靜態**塊,雖然student類建立了兩個物件,但是類載入的時候靜態**塊只執行一次,所以說明類在第一次使用的時候才載入;最後輸出student類中的成員變數。

小結:

1、靜態**塊是在類載入時自動執行的,非靜態**塊在建立物件自動執行的**,不建立物件不執行該類的非靜態**塊。 順序: 靜態**塊--》非靜態**塊--》類構造方法。

2、在靜態方法裡面只能直接呼叫同類中其他的靜態成員(包括變數和方法),而不能直接訪問類中的非靜態成員。因為對於非靜態的方法和變數,需要先建立類的例項物件後方可使用,而靜態方法在使用前不用建立任何物件。

3、如果某些**必須要在專案啟動時候就執行的時候,我們可以採用靜態**塊,這種**是主動執行的;需要在專案啟動的時候就初始化,在不建立物件的情況下,其他程式來呼叫的時候,需要使用靜態方法,此時**是被動執行的。

區別:靜態**塊是自動執行的;

靜態方法是被呼叫的時候才執行的;

作用:靜態**塊可以用來初始化一些專案最常用的變數和物件;靜態方法可以用作不建立物件也可以能需要執行的**。

this關鍵字 static關鍵字

1.當成員變數和區域性變數重名,可以用關鍵字this來區分 this 代表物件,代表那個物件呢?當前物件 this就是所在函式所屬物件的引用 簡單說 那個物件呼叫了this所在的函式,this就代表哪個物件 this也可以用於在建構函式中呼叫其他建構函式 注意 只能定義在建構函式的第一行,因為初始化...

Java this關鍵字,static關鍵字

1,this.屬性,this.方法,表示當前物件的屬性,當前類的方法 2,this,表示當前物件,當前正在操作這個方法的物件就是當前物件 3,使用this 引數若干 可以呼叫當前類的構造方法,如果,構造方法之間相互呼叫,則有要求 一 this 必須放在首行,二 至少有乙個構造方法是沒有呼叫this ...

static關鍵字 final 關鍵字

特點 隨著類的載入而載入,也就是說靜態會隨著類的消失而消失,說明他的生命週期最長 靜態變數 static 關鍵字修飾成員變數,使用 類名.變數名 的形式來訪問,也可以使用 例項物件.變數名 的形式來訪問。靜態方法 static 關鍵字修飾成員函式,靜態方法可以使用 類名.方法名 的形式來訪問,也可以...