簡述:在java中咱們常常使用static關鍵字,該關鍵字就至關因而全局變量(靜態變量或者是類變量)。java
(1)當在類中的方法或者是變量前加上static時,那麼這個方法或者變量只有‘一份’,在此後的類的各類對象中也是共用一份這個static所修飾的方法或者是變量(直接經過類名訪問),相比於父類中其餘的非static變量或者是方法,當其對象產生時,對象中會本身備份一份非static變量或者是方法(被全部的類實例共享)。因此從這個角度看,static實際上能夠節約內存空間,可是會一直佔用內存空間,直到程序退出內存爲止。code
(2)靜態方法中不能調用非靜態方法,非靜態方法中既能夠調用靜態方法或變量也能夠調用非靜態方法或者是變量。對象
(3)用static修飾的代碼塊表示靜態代碼塊,當Java虛擬機(JVM)加載類時,就會執行該代碼塊(用處很是大哦)。內存
(4)因此通常在須要實現如下兩個功能時使用靜態變量: 在對象之間共享值時;方便訪問變量時。虛擬機
代碼示例:class
public class Teststatic { int a; double b; static int c; static double d; public static void test() { // b=2;//錯誤寫法:由於靜態方法不能調用非靜態變量 c = 3;// 靜態方法固然能夠調用靜態變量咯 System.out.println("引用靜態變量成功!" + "c" + "=" + c); } public static void main(String[] args) { // TODO Auto-generated method stub Teststatic.d = 5.6;//直接經過類來調用靜態變量 System.out.println(Teststatic.d); Teststatic.test();// 說明靜態方法或變量直接屬於類屬性,能夠直接調用而不須要經過對象調用。 } }
附上static的內存分析圖:test
變量