使用static修飾符修飾的方法是靜態方法,反之是非靜態方法,靜態方法和靜態變數在建立後始終存在於同一塊記憶體中,它不屬於某乙個類的具體例項,
而是屬於類本身,而每建立乙個類的例項,系統都會為每乙個非靜態成員分配乙個記憶體空間,而靜態成員無論建立多少例項,類的靜態成員在記憶體中都
只占有同一塊記憶體區域.靜態欄位和靜態成員通常適用於一些不會 經常變化而用頻繁使用的資料,如資料庫連線字串,同時由於不會自動銷毀,需及時進行**.
c#中靜態方法和非靜態方法區別:
c#靜態方法為類所有,在類例項化之前即可使用,非靜態方法可以訪問類中的任何成員(包括靜態成員),而靜態方法只能訪問靜態成員,所以static記憶體
只能存在static變數和static方法,正因為static方法為類所有,所以在static內部不能使用this關鍵字(this表示當前物件,static不能為類例項所訪問),類的靜態
方法在類例項化之前就可以使用,而類中的非靜態成員必須在類例項化後才可以分配記憶體.靜態方法的效率比非靜態方法高,靜態方法的缺點是不會自動進行
銷毀,而例項化的方法可以自動銷毀.靜態方法和靜態變數建立後始終使用同一塊記憶體,而使用例項化的方法會建立多個記憶體.
class test }
在這段**中程式的執行順序中b>c>k,即靜態成員在類例項化之前就已分配記憶體空間,非靜態成員必須在類例項化後才分配記憶體空間,而在例項項化後剛必須
呼叫類的建構函式,所以變數的例項化順序是: 靜態成員》建構函式》非靜態成員
class a}
靜態方法f()可以訪問靜態成員y,但是不能訪問非靜態成員x,因為x作為非靜態成員,在類的每乙個例項中都占有乙個記憶體儲存,而靜態方法是類所共享的,他無法判斷當前的x是哪個類的例項,所以不知道中記憶體的哪個位址去讀取x,而y作為靜態成員,所有類的例項都公用乙個副本,很容易找到位址.
私有建構函式: 私有建構函式的類不能被例項化,因為private的訪問級別是私有的,只能在類裡面訪問,類外面訪問不了
protected: 保護級別,當前類和其派生類(子類)中可以訪問
internal :預設級別,當前程式集中使用
靜態域 靜態變數 靜態方法
static關鍵字修飾的域 class employee 這裡employee物件有乙個例項域id和乙個靜態域nextid,每乙個employee物件都有乙個例項域id,但是所有的物件共享乙個靜態域nextid。假設有1000個employee物件,則有1000個例項域id,但是,只有乙個靜態域ne...
Java static靜態變數 靜態方法
1.static關鍵字作用 static關鍵字修飾類成員變數 成員方法 內部類可以使這些類成員的建立和使用,直接與類相關而與具體例項無關。2.靜態變數 類變數 只在系統載入類時分配空間及初始化,建立該類例項時不再分配空間,為所有例項提供共享類的靜態變數。可進行例項間的通訊或者統計跟蹤是該類例項的數目...
靜態變數與靜態方法
static 可實現所有的物件共享乙個成員變數。被 static 修飾的成員稱為靜態成員或類成員。它屬於整個類所有,而不是某個物件所有,即被類的所有物件所共享。訪問static成員變數有兩種方式 直接用類名.成員變數名訪問 定義類的物件,使用物件.成員變數名訪問。public class name ...