成員變量跟局部變量的區別

成員變量:寫在類聲明的大括號裏面的變量。

 

    如果在變量有static關鍵字修飾,就叫作靜態變量或類變量;

    如果該變量沒有static關鍵字修飾,就叫作非靜態變量或實例變量;

class A {
		int a ;
	}

局部變量:方法內定義的變量、形參、代碼塊中定義的變量.

                  局部變量除形參之外,都必須顯示初始化,就是必須先給方法局部變量和代碼塊局部變量指定初始值,否則不可以訪問它們。

public void test(int a){
		a = 1;
	}

兩者的區別

一、初始值不同:

    成員變量聲明瞭就可以使用,有默認值;局部變量必須經過聲明和賦值操作才能使用,並且沒有默認值。

成員變量的默認值:

 

int類型的默認值是0

    String類型的默認值是null

    double類型的默認值是0.0d

    Integer類型的默認值是null

    Long類型的默認值是null

    long類型的默認值是0L

    float類型的默認值是0.0f

    char類型的默認值是\u0000

    byte類型的默認值是(byte)0

    short類型的默認值是(short)0

 

二、存儲位置不同:

 

    成員變量分配到堆中,成員變量的作用於在整個內部都是可見的,所有成員方法都可以使用它。如果訪問權限允許,還可以在類的外部使用成員變量。

    局部變量分配到棧中,局部變量的作用於僅限於定義它的方法,在該方法的外部無法訪問。

三、生命週期不同:

    成員變量隨着對象的存在而存在,隨着對象的銷燬而銷燬;局部變量隨着方法的存在而存在調用,銷燬而銷燬;局部變量只能在聲明它的方法中使用,而成員變量在整個類中都可以使用。

四、優先級:

    成員變量和局部變量同名時,局部變量的賦值具有更高的優先級,優先取局部變量的值。

五、可否同名:

    在同一個方法中,可以有同名的局部變量;

    在不同的方法中,可以有同名的局部變量。

六、修飾符:

    成員變量可以被public,protect,private,static等修飾符修飾;

    局部變量不能被控制修飾符及static修飾;

    兩者都可以定義成final型。

小結:

     同一個類裏,成員變量的作用範圍是整個類內,一個類裏不能定義兩個同名的成員變量,即使一個是類變量,一個是實例變量也不行;一個方法裏不能定義兩個同名的方法局部變量,方法局部變量與形參也不能同名;同一個方法中不同代碼塊內的代碼塊局部變量可以同名;如果先定義代碼塊局部變量,後定義方法局部變量,前面定義的代碼塊局部變量與後面定義的方法局部變量也可以同名。

     java允許局部變量和成員變量同名,如果方法裏的成員變量和局部變量同名,局部變量會覆蓋成員變量,如果需要在這個方法裏引用被覆蓋的成員變量,則可以使用this(對於實例變量)或類名(對於類變量)作爲調用者來限定訪問成員變量。      

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