首先Goo某的翻譯, static :(adj) 靜止的,不變的。this
在全部程序編譯運行的過程當中,變量都是由系統自動分配內存進行存儲的。spa
在這個存儲過程當中,static所修飾的變量(也就是靜態變量),它所被分配的空間是一直伴隨程序運行的,空間將會保持到程序的結束關閉,纔會被釋放。翻譯
換句話說:程序運行時,系統分配給靜態變量的內存是一直存在的,除非程序被終止。code
根據這一點來看,倘若在定義一個類的過程當中,定義了一個static修飾的變量,那麼這個類在被加載的同時,被static修飾的變量就存在於內存當中了,這樣一來就獨立於該類的全部對象,被該類全部對象共享,將對象相關的變成了類相關,因此靜態變量也能夠稱之爲類變量。對象
假設一個類中某個屬性被static所修飾,那麼就能夠經過"類名.屬性名"來訪問。blog
例子:內存
1 public class Demo{ 2 public static void main(String[] args){ 3 Worker w1 = new Worker("Jack"); 4 w1.startWork(); 5 System.out.println("當前開工的總人數:"+Worker.totle); 6 Worker w2 = new Worker("Rose"); 7 w2.startWork(); 8 System.out.println("當前開工的總人數:"+Worker.totle); 9 } 10 } 11 12 class Worker{ 13 String name; 14 static int totle = 0;
15 16 public Worker(String name){ 17 this.name = name; 18 } 19 20 public void startWork(){ 21 totle++; 22 System.out.println("工人:"+this.name+"開工了。"); 23 } 24 }
運行結果:編譯
值得注意的一點是:例子中的實例變量name是在建立對象時,經過構造器初始化的。class
而被static修飾的類變量totle在類的加載過程當中,就被初始化的。變量