static意思是靜態(tài),可以修飾類(lèi)、字段、屬性、方法
標(biāo)記為static的就不用創(chuàng)建實(shí)例對(duì)象調(diào)用了,可以通過(guò)類(lèi)名直接點(diǎn)出來(lái)
static三種用法:
1.用于變量前,表示每次重新使用該變量所在方法、類(lèi)或自定義類(lèi)時(shí),變量的值為程序這次運(yùn)行最后一次為變量賦值時(shí)的值,這個(gè)方法稱為靜態(tài)函數(shù):
PRivate void s()
{
static int a=1;
a++;
}
方法第一次調(diào)用結(jié)束后a在內(nèi)存內(nèi)值為2;
方法第一次調(diào)用結(jié)束后a在內(nèi)存內(nèi)值為3;
2.在方法(函數(shù))前用static修飾,表示此方法為所在類(lèi)或所在自定義類(lèi)所有,而不是這個(gè)類(lèi)的實(shí)例所有,這個(gè)方法稱為靜態(tài)方法:
情況一:非靜態(tài)方法:
class t
{
t(….(參數(shù),下面同))
{
~~~~(方法內(nèi)容,下面同)
}
void s(….)
{
~~~~
}
}
當(dāng)你在其他方法里調(diào)用這個(gè)類(lèi)中的方法s,則需先聲明這個(gè)類(lèi)的變量如:t sd = new t(….);
再在t里調(diào)用方法:sd.s(….);
情況2:靜態(tài)方法:
class t
{
t(….(參數(shù),下面同))
{
~~~~(方法內(nèi)容,下面同)
}
static void s(….)
{
~~~~
}
}
當(dāng)你在其他方法里調(diào)用這個(gè)類(lèi)中的方法s,則不用先聲明這個(gè)類(lèi)的變量如直接調(diào)用方法:t.s(….);
3.用于class前,說(shuō)明此類(lèi)型無(wú)法新建實(shí)例,簡(jiǎn)單點(diǎn)說(shuō)這個(gè)類(lèi)型的方法全是靜態(tài)方法,這個(gè)類(lèi)里的非靜態(tài)方法是不能使用的,這個(gè)類(lèi)型稱為靜態(tài)類(lèi).
比如C#控制臺(tái)操作的Cancle類(lèi)里面的成員就被標(biāo)記為靜態(tài)的,可以直接用Concle.直接點(diǎn)出來(lái)使用。
如果沒(méi)有標(biāo)記為靜態(tài)就要通過(guò)創(chuàng)建實(shí)例對(duì)象來(lái)調(diào)用,比如說(shuō)動(dòng)態(tài)字符串StringBuilder就要new一個(gè)實(shí)例來(lái)調(diào)用
StringBuilder sb =new StringBuilder();
sb.xxx(); //xxx是方法名
static class t
{
~~~~
}
~~~~
class d
{
~~~~
void f(….)
{
~~~~
t v = new t();//此時(shí)程序會(huì)出現(xiàn)錯(cuò)誤
}
}
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注