1. 程式人生 > 其它 >靜態和非靜態的區別

靜態和非靜態的區別

靜態和非靜態的區別

1)、在非靜態類中,既可以有例項成員(非靜態成員),也可以有靜態成員

2)、在呼叫例項成員的時候,需要使用物件名.例項成員;
在呼叫靜態成員的時候,需要使用類名.靜態成員名;

總結:

靜態成員必須使用類名去呼叫,而例項成員使用物件名呼叫。
靜態函式中,只能訪問靜態成員,不允許訪問例項成員。
例項函式中,既可以使用靜態成員,也可以使用例項成員。
靜態類中只允許有靜態成員,不允許出現例項成員。

使用:

1)、如果你想要你的類當做一個"工具類"去使用,這個時候可以考慮將類寫成靜態的。
2)、靜態類在整個專案中資源共享。
只有在程式全部結束之後,靜態類才會釋放資源。

堆 棧 靜態儲存區域

釋放資源。GC Garbage Collection垃圾回收器

關於佔用記憶體

靜態的東西在類載入的時候,會在記憶體中開闢空間,例項成員不會,所以在靜態類或者方法裡無法訪問到例項成員,所以靜態方法裡面只能訪問靜態欄位或者屬性。
靜態類已分配固定的記憶體空間,非靜態類在每new一個新物件要在記憶體中重新開闢空間,所以靜態類不能例項化
靜態類會在程式初始化執行時建立完所有欄位和方法,而非靜態類則會在例項化時建立所有欄位和方法
類是不佔記憶體的,只有物件是佔記憶體的,靜態類也是佔記憶體的

記憶體有
堆,棧,靜態儲存區域(靜態資源全部都放在靜態儲存區域,在專案中任意地方都可以訪問)