這裏簡單作一下筆記,區分Java全局變量裏的靜態變量與實例變量。spa
一、Java裏的全局變量code
首先了解Java裏的全局變量,也叫成員變量。對象
特色:blog
(1)、一個類中既不在方法體內,也不在程序塊內定義的變量;class
(2)、類中全部的方法和代碼塊均可以訪問成員變量;test
(3)、對於沒有初始化的成員變量,系統會指定默認的值。變量
二、全局變量包括靜態變量與實例變量引用
字面理解:程序
靜態變量也叫作類變量,獨立於方法以外的變量,有static修飾。方法
實例變量一樣獨立也是獨立於方法以外的變量,但沒有static修飾。
private static int num1= 100; //靜態變量 private int num2= 100; //實例變量
三、舉個栗子:
public class Demo_variable { private static int static_variable = 100; //靜態變量 private int Instance_variable = 100; //實例變量 public Demo_variable() { static_variable++; Instance_variable++; System.out.println("靜態變量 = "+static_variable+" 實例變量 = "+Instance_variable); } public static void main(String[] args) { Demo_variable test1 = new Demo_variable(); Demo_variable test2 = new Demo_variable(); } }
運行時結果以下:
靜態變量 = 101 全局變量 = 101 靜態變量 = 102 全局變量 = 101
四、區別總結以下:
實例變量屬於某個對象的屬性,必須建立了實例對象,其中的實例變量纔會被分配空間,才能使用這個實例變量。
結合上述給出的例子。每建立一個實例對象,就會分配一個Instance_variable,實例對象之間的Instance_variable是互不影響的,
因此就能夠解釋爲何輸出的兩個Instance_variable值是相同的了。
靜態變量不屬於某個實例對象,而是屬於整個類。
只要程序加載了類的字節碼,不用建立任何實例對象,靜態變量就回被分配空間,靜態變量就能夠被使用了。
結合上述給出的例子,不管建立多少個實例對象,永遠都只分配一個static_variable變量,而且每建立一個實例對象,static_variable就會加一。
總之,實例變量必須建立對象後,才能夠經過這個對象來使用;
靜態變量則能夠直接使用類名來引用(若是實例對象存在,也能夠經過實例對象來引用)。
其實,這也能夠解釋,爲何static修飾的方法不用在實例對象建立後,能夠調用。
而沒有static修飾的方法必需要與對象關聯在一塊兒,必須建立一個對象後,才能夠在該對象上進行方法調用。