關於Java中被static修飾的靜態變量 (類變量)

  首先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在類的加載過程當中,就被初始化的。變量

相關文章
相關標籤/搜索