【static】spa
<1>static成員變量存儲在內存data segment區域,不是存放在堆中。對象
<2>靜態成員變量屬於整個類,任何一個對象均可以訪問這個值;若是沒有對象,能夠用類訪問,格式爲:類.靜態成員變量。內存
【靜態變量與非靜態變量】編譯器
靜態成員變量只存在一份(不論new多少個對象,也無論用不用到該變量,它屬於整個類),存放在內存的數據區;非靜態成員變量每new一個對象就產生一次,在內存的堆中。io
【Exception】編譯
public class A{class
int i;變量
}引用
public static void main(String[] args){程序
int i = 0;
}
編譯運行後會報錯:non-static variable i cannot be referenced from a static context[非靜態變量i不能在靜態上下文引用]
【分析】靜態上下文指的是static main,main方法須要執行的話不須要new一個對象出來(若是不設置爲static,那麼意味着在代碼區找到主程序入口時,還須要new對象才能運行,那樣對編譯器而言負擔太重)。
【靜態方法與動態方法】
靜態方法不是針對某一對象調用,沒有對象同樣能夠調用(不出現對象名字也能夠訪問);非靜態方法針對某一對象調用。