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

時間 2021-06-28 17:30:18

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

在java中靜態方法和一般方法有什麼區別

韋涵涵 靜態方法在jvm剛載入的時候就編譯過了.在程式的執行過程中隨時可以呼叫.不需要去例項化某個物件然後再去呼叫.可以直接用類名去呼叫.不過你想一下,在jvm剛載入的進修就編譯過了.也就是說它一直存在著.也就是說它一直佔用這記憶體中的地址空間.所以說也是比較佔資源的噢 相對於靜態方法而言,動態方法...

C 多執行緒 如何鎖定靜態類中靜態方法的引數

沒明白你的意思,那兩個引數只是形參,不同的執行緒都是獨立的,不會干擾。呼叫方法前用 加執行緒鎖,呼叫結束後釋放。方法是可重入的方法,不存在你說的問題,因此不用鎖引數。靜態類裡的引數本來就是靜態的,如何讓他錯亂你教教我?c 多執行緒呼叫static函式,怎麼利用鎖 多執行緒訪問靜態類中的方法最好加上鎖...

靜態分析和比較靜態分析的聯絡和區別有哪些

小公尺地瓜來 靜態分析 static analysis 就是分析經濟現象的均衡狀態以及有關的經濟變數達到均衡狀態所具備的條件,它完全抽象掉了時間因素和具體的變化過程,是一種靜止地 孤立地考察某種經濟事物的方法。如研究均衡 時,捨掉時間 地點等因素,並假定影響均衡 的其他因素,如消費者偏好 收入及相關...