記憶體分配:
靜態變數在應用程式初始化(被裝載)時,就存在於記憶體當中,直到它所在的類的程式執行結束時才消亡;
而非靜態變數需要被例項化後才會分配記憶體。
生存週期 :
靜態變數生存週期為應用程式的存在週期;
非靜態變數的存在週期取決於例項化的類的存在週期。
呼叫方式 :
靜態變數只能通過「類.靜態變數名」呼叫,類的例項不能呼叫;
非靜態變數當該變數所在的類被例項化後,通過例項化的類名直接訪問。
共享方式 :
靜態變數是全域性變數,被所有類的例項物件共享,即乙個例項的改變了靜態變數的值,其他同類的例項讀到的就是變化後的值;
非靜態變數是區域性變數,不共享的。
訪問方式 :
靜態成員不能訪問非靜態成員;
非靜態成員可以訪問靜態成員。
附:靜態建構函式:
用於對靜態字段、唯讀欄位等的初始化。
新增static關鍵字,不能新增訪問修飾符,因為靜態建構函式都是私有的。
乙個類只能有乙個靜態建構函式。
無引數的建構函式可以與靜態建構函式共存。儘管引數列表相同,但乙個屬於類,乙個屬於例項,所以不會衝突。
如果沒有寫靜態建構函式,而類中包含帶有初始值設定的靜態成員,那麼編譯器會自動生成預設的靜態建構函式。
靜態變數 非靜態變數的區別
c 變數根據定義位置的不同,具有不同的作用域,作用域可分為6種 全域性作用域,區域性作用域,語句作用域,類作用域,命名作用域和檔案作用域。從作用域看 全域性變數具有全域性作用域。全域性變數只需在乙個原始檔中定義,就可以作用於所有的原始檔。當然,其他不包括全域性變數定義的原始檔需要用extern關鍵字...
靜態變數和非靜態變數
class string1 a和b編譯報錯,can not make a static referrence to no static filed s3,s4 分析 string s1 pingguo string s2 xiangjiao string s3 new string lizi str...
靜態變數,非靜態變數和final變數
package com.founder.bg.quartz.job 7 在程式執行時的區別 例項變數屬於某個物件的屬性,必須建立了例項物件,8 其中的例項變數才會被分配空間,才能使用這個例項變數。靜態變數不屬於某 9 個例項物件,而是屬於類,所以也稱為類變數,只要程式載入了類的位元組碼,10 不用建...