靜態變量和實例變量的區別?

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的值都只加了一次





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章