1.從語法上的區別:
靜態變量前面要加static關鍵字,而實例變量前不加
2.在程序運行時的區別:
實例變量屬於某個對象的屬性,必須 創建了實例對象,其中的實例變量才會 被分配到空間,
才能使用這個實例變量。靜態 變量不屬於某個 實例對象,而是屬於類,所以稱為類變量 ,只要程序加載了
類的字節碼,不用創建任何實例對象,靜態變量就會被分配到空間,靜態變量就可以被使用了 。
總之,實例變量必須創建對象后才可以通過這個對象來使用,靜態變量則可以直接使用類名來引用。
代碼如下:
public class Test {
public static int staticVar = 0;
public int instanceVar = 0;
public Test(){
staticVar++;
instanceVar++;
System.out.println("staticVar="+staticVar);
System.out.println("instanceVar="+instanceVar);
}
public static void main(String[] args) {
Test v = new Test();
Test v1 = new Test();
Test v3 = new Test();
}
}
運行結果 如下:
staticVar=1
instanceVar=1
staticVar=2
instanceVar=1
staticVar=3
instanceVar=1
代碼分析:
無論創建多少個實例對象(Test v = new Test();),永遠都只分配了一個staticVar變量
並且每創建一個實例對象,這個staticVar就會加1;但是,每創建一個實例對象,就會分配一個instanceVar,
即可能分配多個instanceVar,並且每個instanceVar的值都只加了一次