成員變數:作為類的成員而存在,直接存在於類中。所有類的成員變 量可以通過this來引用。
區域性變數:作為方法或語句塊的成員而存在,存在於方法的引數列表和方法定義中。
1.在類中的位置不同:
成員變數:在類中,方法外
區域性變數:在方法中或者方法宣告上(形式引數)
2.在記憶體中的位置不同:
成員變數儲存在堆,區域性變數儲存在棧。區域性變數的作用域僅限於定義它的方法,在該方法的外部無法訪問它。成員變數的作用域在整個類內部都是可見的,所有成員方法都可以使用它。如果訪問許可權允許, 還可以在類的外部使用成員變數。
3.生命週期不同:
區域性變數的生存週期與方法的執行期相同。 當方法執行到定義區域性變數的語句時,區域性變數被建立;執行到它所在的作用域的最後一條語句時,區域性變數被銷毀。類的成員變數,如果是例項成員變數,它和物件的生存期相同。而靜態成員變數的生存期是整個程式執行期。
4.初始化值不同:
成員變數有預設值,基本型別的預設值為 0,復合型別的預設值為null。(被final修飾且沒有static的必須顯式賦值),區域性變數不會自動賦值,所以局 部變數在定義後先要賦初值,然後才能使用。
5.區域性變數可以和成員變數同名,且在使用時,區域性變數具有更高的優先順序。
區域性變數與成員變數的區別
public class test2 在eat和sleep方法中,都是string型別的name,說明不同的方法,可以有同名的區域性變數 當成員變數和區域性變數名稱相同時,區域性變數更有優先順序 如果想使用成員變數,那麼就使用this.屬性名 成員變數有預設的初始值,應用資料型別的預設值為null,...
成員變數與區域性變數的區別
儲存方式存在差異?區域性變數儲存在棧記憶體中,方法呼叫完畢就會釋放變數占用的記憶體空間。成員變數儲存在堆記憶體中,方法呼叫完畢,不會釋放占用的記憶體空間 因為成員變數可以在多個方法中使用 定義上的差異?成員變數可以使用修飾符 public protected private 區域性變數不能使用修飾符...
成員變數與區域性變數的區別
成員變數與區域性變數的區別 1 自定義位置的區別 成員變數定義在方法之外,類之內 區域性變數是宣告在方法之內的變數 2 作用上的區別 成員變數的作用是描述一類事物的屬性 區域性變數的作用是提供乙個變數給方法內部使用的 3 生命週期的區別 成員變數隨著物件的建立而存在,隨著物件的消失而消失 區域性變數...