Java筆記_靜態變量和實例變量的區別

 

這裏簡單作一下筆記,區分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修飾的方法必需要與對象關聯在一塊兒,必須建立一個對象後,才能夠在該對象上進行方法調用。

相關文章
相關標籤/搜索