Java中靜態變量與實例變量


知識回顧

上一篇總結了java中成員變量和局部變量的區別,這一篇將總結靜態變量和實例變量的一些特性和區別。

示例代碼

package Variable;

public class VariableDemo {

    //實例變量
    int a;

    //靜態變量
    static int b;

    public static void main(String[] args) {
        System.out.println(VariableDemo.b);//靜態變量可以直接被類調用,實例變量不可以
        
        //新建一個對象 variableDemo
        VariableDemo variableDemo = new VariableDemo();

        //實例變量和靜態變量都可以被對象調用,默認值為0或null
        System.out.println(variableDemo.a);//0
        System.out.println(variableDemo.b);//0

        //再新建兩個對象 variableDemo1 、variableDemo2
        VariableDemo variableDemo1 = new VariableDemo();
        VariableDemo variableDemo2 = new VariableDemo();

        //對象variableDemo將靜態變量b的值改變
        variableDemo.b=10;

        //靜態變量實質上是全局變量,其中一個變量將其值改變,其他對象得到的都是改變后的結果
        System.out.println(VariableDemo.b);//10
        System.out.println(variableDemo.b);//10
        System.out.println(variableDemo1.b);//10
        System.out.println(variableDemo2.b);//10

        //對象variableDemo將實例對象a的值改變
        variableDemo.a = 15;

        //實例變量屬於對象私有,某一個對象將其值改變,不影響其他對象
        System.out.println(variableDemo.a);//15
        System.out.println(variableDemo1.a);//0
        System.out.println(variableDemo2.a);//0
    }
}


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

1、生命周期不同

實例變量隨着對象的創建而存在,隨着對象的回收而釋放。
靜態變量隨着類的加載而存在,隨着類的消失而消失。

2、調用方式不同

實例變量只能被對象調用。
靜態變量可以被對象調用,還可以被類名調用。

3、數據存儲位置不同

實例變量存儲在堆內存的對象中,所以也叫對象的特有數據。
靜態變量數據存儲在方法區(共享數據區)的靜態區,所以也叫對象的共享數據。

總結

1.成員變量分為靜態變量與實例變量。用 static修飾的變量是靜態變量,不用 static 修飾的是實例變量。
2. 實例變量和靜態變量都可以被對象調用,數值類型的默認值為0,字符為null
3. 靜態變量實質上是全局變量,其中一個變量將其值改變,其他對象得到的都是改變后的結果
4. 實例變量屬於對象私有,某一個對象將其值改變,不影響其他對象


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM