靜態方法和非靜態方法的區別是什麼

2021-06-28 17:30:54 字數 2079 閱讀 3899

1樓:問明

一、相同點:

靜態類和非靜態類在c#中定義基本是一樣的,只是靜態類定義需要加上static修飾符而已。

二、生命週期:

靜態方法(static method)與靜態成員變數一樣,屬於類本身,在類裝載的時候被裝載到記憶體(memory),不自動進行銷燬,會一直存在於記憶體中,直到jvm關閉。

非靜態方法(non-static method)又叫例項化方法,屬於例項物件,例項化後才會分配記憶體,必須通過類的例項來引用。不會常駐記憶體,當例項物件被jvm**之後,也跟著消失。

三、效率:

靜態方法的使用效率比非靜態方法的效率高。

按照上面的概念,只要記憶體夠用,都可以使用靜態的。

四、執行緒安全:

靜態方法是共享**段,靜態變數是共享資料段。既然是「共享」就有併發(concurrence)的問題。

靜態方法和例項方法是一樣的,在型別第一次被使用時載入。呼叫的速度基本上沒有差別。

五、靜態成員與非靜態成員比較:

1、靜態成員屬於類所有,非靜態成員屬於類的例項所有。

2、每建立一個類的例項,都會在記憶體中為非靜態成員新分配一塊儲存;非靜態成員屬於類所有,為各個類的例項所公用,無論類建立了多少例項,類的靜態成員在記憶體中只佔同一塊區域。

六、使用不同:

1、靜態方法屬於類所有,類例項化前即可使用。

2、非靜態方法可以訪問類中的任何成員,靜態方法只能訪問類中的靜態成員。

3、因為靜態方法在類例項化前就可以使用,而類中的非靜態變數必須在例項化之後才能分配記憶體,static內部只能出現static變數和其他static方法!而且static方法中還不能使用this....等關鍵字..

因為它是屬於整個類!

4、靜態方法效率上要比例項化高,靜態方法的缺點是不自動進行銷燬,而例項化的則可以做銷燬。

5、靜態方法和靜態變數建立後始終使用同一塊記憶體,而使用例項的方式會建立多個記憶體.

2樓:千鋒教育

靜態方法和非靜態方法的區別總結如下:

1、靜態方法屬於類所有,類例項化前即可使用;

2、非靜態方法可以訪問類中的任何成員,靜態方法只能訪問類中的靜態成員;

3、因為靜態方法在類例項化前就可以使用,而類中的非靜態變數必須在例項化之後才能分配記憶體;

4、static內部只能出現static變數和其他static方法!而且static方法中還不能使用this等關鍵字,因為它是屬於整個類;

5、靜態方法效率上要比例項化高,靜態方法的缺點是不自動進行銷燬,而例項化的則可以做銷燬;

6、靜態方法和靜態變數建立後始終使用同一塊記憶體,而使用例項的方式會建立多個記憶體。

主要區別:靜態方法在建立物件前就可以使用了,非靜態方法必須通過new出來的物件呼叫。

如:public class per

public string getname()

}上面這個類中的gettype方法,在沒有new物件前這就可以這樣用:

string type=per.gettype();//type="人類";

而getname方法則不能這樣使用,編譯都不會通過

getname必須這樣:

per p=new per();

string name=p.getname();//name="張三";

當然,gettype方法也可能通過物件呼叫:

string type=p.gettype();//type="人類";

3樓:

靜態方法和非靜態方法的區別,是靜態方法,一般用於觀察。

4樓:愛夏夏

靜態類和非靜態類在c#中定義基本是一樣的,只是靜態類定義需要加上static修飾符而已。

下面總結下它們之間的區別:

1、靜態類只能包含靜態成員,否則會丟擲編譯錯誤;然而非靜態類既可以包含非靜態成員也可以包含靜態成員

2、靜態類是不能例項化,之所以不能例項化,是因為靜態類會導致c#編譯器將該類同時標記為abstract和sealed,並且編譯器不會在型別中

3、生成一個例項的建構函式,從而導致靜態類不能例項化;非靜態類可以,並且靜態成員的訪問只能通過類來進行訪問,因為靜態成員是屬於類的。

動態市盈率和靜態市盈率的區別是什麼

都是 除以每股收益。靜態市盈率是用 除以去年財務年度每股收益。動態市盈率是用 除以未來財務年度預期每股收益。區別就在每股收益上,靜態用的是已知資料,動態用的是預期資料 動態市盈率和靜態市盈率什麼區別?1 演算法不同,靜態市盈率 股價 當期每股收益 動態市盈率 靜態市盈率 1 年複合增長率 n次方 2...

java中子類可以繼承父類的靜態方法嗎

其實樓主只要理解static修飾的成員在記憶體中的分配情況就能理解 以樓主 為例 1.首先宣告一點 static修飾的變數 函式優行於該類物件存在 隨著類的載入而載入,而這時還不需要物件 這也是靜態 可用類名.出來的原來 2.理解以上就可推斷出很多 eg 2.1 假設有b b new b 則這時因為...

路由器動態ip和靜態ip的區別是什麼

1 動態ip和靜態ip的區別在於 動態ip需要在連線網路時自動獲取ip地址以供使用者正常上網,而靜態ip是isp在裝機時分配給使用者的ip地址,可以直接連線上網,不需要獲取ip地址。2 動態ip 由於ip地址資源很寶貴,因此大部分使用者上網都是使用動態ip地址的,比如通過modem isdn ads...