靜態(tài)方法和非靜態(tài)方法的區(qū)別:
一般來說習(xí)慣于先new一個(gè)目標(biāo)對(duì)象在調(diào)用對(duì)應(yīng)的方法,但在很多時(shí)候也會(huì)直接調(diào)用靜態(tài)方法,這兩者的用法看似差不多,很多時(shí)候僅僅圖個(gè)方便直接使用靜態(tài)方法調(diào)用。這里記錄一下兩者的區(qū)別.
內(nèi)存上分析:
在使用靜態(tài)方法的過程中,尤其是大量代碼運(yùn)行過程中會(huì)在較大并發(fā)過程中更容易出現(xiàn)OOM之類的問題,因?yàn)?b>靜態(tài)方法是在程序一開始就會(huì)加載進(jìn)內(nèi)存,這也是為何可以直接在程序中直接調(diào)用靜態(tài)方法的原因,而實(shí)例化方法是在程序中調(diào)用的時(shí)候才會(huì)加載進(jìn)內(nèi)存,所以可以看到靜態(tài)方法很快,但是太多會(huì)占用內(nèi)存
任何語言底層都是對(duì)內(nèi)存和磁盤的操作,面向?qū)ο笾皇轻槍?duì)軟件層的問題,底層都一樣.靜態(tài)內(nèi)存是連續(xù)的,因?yàn)槭窃诔绦蜷_始時(shí)就生成了,而實(shí)例申請(qǐng)的是離散的空間,所以當(dāng)然沒有靜態(tài)方法快,而且靜態(tài)內(nèi)存是有限制的盅惜,太多了程序會(huì)啟動(dòng)不了伐割。 ?
靜態(tài)方法和非靜態(tài)方法對(duì)比總結(jié):
?①靜態(tài)成員屬于類所有,非靜態(tài)成員屬于類的實(shí)例所有笙隙。
?②每創(chuàng)建一個(gè)類的實(shí)例洪灯,都會(huì)在內(nèi)存中為非靜態(tài)成員新分配一塊存儲(chǔ);
非靜態(tài)成員屬于類所有竟痰,為各個(gè)類的實(shí)例所公用签钩,無論類創(chuàng)建了多少實(shí)例,類的靜態(tài)成員在內(nèi)存中只占同一塊區(qū)域坏快。
總括:大家對(duì)這個(gè)問題都有一個(gè)共識(shí):那就是實(shí)例化方法更多被使用和穩(wěn)妥铅檩,靜態(tài)方法少使用。如果從線程安全假消、性能柠并、兼容性上來看也是選用實(shí)例化方法為宜。