tatic意思是靜態,可以修飾類、字段、屬性、方法
標記為static的就不用創建實例對象調用了,可以通過類名直接點出來
static三種用法:
1.用於變量前,表示每次重新使用該變量所在方法、類或自定義類時,變量的值為程序這次運行最後一次為變量賦值時的值,這個方法稱為靜態函數:
private void s()
{
static int a=1;
a++;
}
方法第一次調用結束後a在內存內值為2;
方法第一次調用結束後a在內存內值為3;
2.在方法(函數)前用static修飾,表示此方法為所在類或所在自定義類所有,而不是這個類的實例所有,這個方法稱為靜態方法:
情況一:非靜態方法:
class t
{
t(....(參數,下面同))
{
~~~~(方法內容,下面同)
}
void s(....)
{
~~~~
}
}
當你在其他方法裡調用這個類中的方法s,則需先聲明這個類的變量如:t sd = new t(....);
再在t裡調用方法:sd.s(....);
情況2:靜態方法:
class t
{
t(....(參數,下面同))
{
~~~~(方法內容,下面同)
}
static void s(....)
{
~~~~
}
}
當你在其他方法裡調用這個類中的方法s,則不用先聲明這個類的變量如直接調用方法:t.s(....);
呵呵,這個就要看你的具體需求了,我們知道凡是在變量、方法、類前聲明了static關鍵字後,他們就是全局的了,
好處就是,你不需要每次在使用些方法的時候頻繁使用坑爹的new關鍵字了(說實話,這真的很麻煩)。
還有就是考慮系統資源的安全性,打個比方吧,員工類,一個公司咱需要很多員工吧,咱就可以new出無數個員工,但是部門領導最好是static的,那樣就防止new出很多領導啦!
3.用於class前,說明此類型無法新建實例,簡單點說這個類型的方法全是靜態方法,這個類裡的非靜態方法是不能使用的,這個類型稱為靜態類.
比如C#控制台操作的Cancle類裡面的成員就被標記為靜態的,可以直接用Concle.直接點出來使用。
如果沒有標記為靜態就要通過創建實例對象來調用,比如說動態字符串StringBuilder就要new一個實例來調用
StringBuilder sb =new StringBuilder();
sb.xxx(); //xxx是方法名
static class t
{
~~~~
}
~~~~
class d
{
~~~~
void f(....)
{
~~~~
t v = new t();//此時程序會出現錯誤
}
}
Tips:
整個類型在程序運行期間只加載一次。 這樣是對於那些經常使用的類型來說的, 那就不用每次使用前都先加載。效率高些。
但是對那些不常用的類型來說,如果是靜態類型,那就要一直占用相當的內存;一直到程序停止。或者應用程序域被卸 載。所以應該只對那些常用的類型定義成靜態類型。