類的成員變量有兩種:一種是被static關鍵字修飾的變量,叫類變量或靜態變量,一種是沒有被static修飾的,叫做實例變量
在語法定義上的區別:靜態變量前要加static關鍵字,而實例變量前則不加。
在程序運行時的區別:實例變量屬於某個對象的屬性,必須創建了實例對象,其中的實例變量才會被分配空間,才能使用這個實例變量。
靜態變量不屬於某個實例對象,而是屬於類,所以也稱為類變量,只要程序加載了類的字節碼,不用創建任何實例對象
靜態變量就會被分配空間,靜態變量就可以被使用了。總之,實例變量必須創建對象后才可以通過這個對象來使用,靜態變量則可以直接使用類名來引用。
java虛擬機在加載類的過程中為靜態變量分配內存,靜態變量位於方法區
被類的所有實例共享,靜態變量可以通過類名直接訪問。
靜態變量的生命周期取決於類的生命周期,當類被加載的時候,靜態變量被創建並分配內存空間,當類被卸載時,靜態變量被摧毀,並釋放所占有的內存。
類的每一個實例都有相應的實例變量,每創建一個類的實例,java虛擬機為實例變量分配一次內存,實例變量位於堆區中