成員變數 區域性變數 靜態變數和例項變數區別?

2021-10-20 20:14:42 字數 1300 閱讀 4446

變數:在程式執行的過程中,在某個範圍內其值可以發生改變的量。從本質上講,變數其實是記憶體中的一小塊區域

成員變數:方法外部,類內部定義的變數

區域性變數:類的方法中的變數。

成員變數和區域性變數的區別

作用域成員變數:針對整個類有效。

區域性變數:只在某個範圍內有效。(一般指的就是方法,語句體內)

儲存位置

成員變數:隨著物件的建立而存在,隨著物件的消失而消失,儲存在堆記憶體中。

區域性變數:在方法被呼叫,或者語句被執行的時候存在,儲存在棧記憶體中。當方法呼叫完,或者語句結束後,就自動釋放。

生命週期

成員變數:隨著物件的建立而存在,隨著物件的消失而消失

區域性變數:當方法呼叫完,或者語句結束後,就自動釋放。

初始值成員變數:有預設初始值

區域性變數:沒有預設初始值,使用前必須賦值。

使用原則

在使用變數時需要遵循的原則為:就近原則

首先在區域性範圍找,有就使用;接著在成員位置找。

靜態變數: 靜態變數由於不屬於任何例項物件,屬於類的,所以在記憶體中只會有乙份,在類的載入過程中,jvm只為靜態變數分配一次記憶體空間。

例項變數: 每次建立物件,都會為每個物件分配成員變數記憶體空間,例項變數是屬於例項物件的,在記憶體中,建立幾次物件,就有幾份例項變數。

靜態變數與普通變數區別

static變數也稱作靜態變數,靜態變數和非靜態變數的區別是:靜態變數被所有的物件所共享,在記憶體中只有乙個副本,它當且僅當在類初次載入時會被初始化。而非靜態變數是物件所擁有的,在建立物件的時候被初始化,存在多個副本,各個物件擁有的副本互不影響。

還有一點就是static成員變數的初始化順序按照定義的順序進行初始化。

靜態方法和例項方法的區別主要體現在兩個方面:

在外部呼叫靜態方法時,可以使用"類名.方法名"的方式,也可以使用"物件名.方法名"的方式。而例項方法只有後面這種方式。也就是說,呼叫靜態方法可以無需建立物件。

靜態方法在訪問本類的成員時,只允許訪問靜態成員(即靜態成員變數和靜態方法),而不允許訪問例項成員變數和例項方法;例項方法則無此限制

在乙個靜態方法內呼叫乙個非靜態成員為什麼是非法的?

由於靜態方法可以不通過物件進行呼叫,因此在靜態方法裡,不能呼叫其他非靜態變數,也不可以訪問非靜態變數成員。

成員變數 區域性變數 靜態變數

成員變數 成員變數定義在類中,在整個類中都可以被訪問。成員變數隨著物件的建立而建立,隨著物件的消失而消失,存在於物件所在的堆記憶體中。成員變數有預設初始化值。區域性變數 區域性變數只定義在區域性範圍內,如 函式內,語句內等,只在所屬的區域有效。區域性變數存在於棧記憶體中,作用的範圍結束,變數空間會自...

變數分類(區域性變數 成員變數 靜態變數)

1,區域性變數 locl variable 區域性變數指的的就是方法或者語句內部定義的變數,方法裡面定義好的變數就稱之為區域性的變數,它的生命週期從定義的位置開始一直到方法或者語句塊結束。區域性變數在使用前必須先宣告 初始化 賦初值 在使用。public void test public void ...

成員變數 區域性變數與靜態變數對比

一 成員變數 1 成員變數定義在類中,在整個類中都可訪問 2 成員變數與物件共存亡 3 成員變數有預設初始值 二 區域性變數 1 區域性變數定義在區域性範圍內,如 函式 塊內 2 區域性變數存在棧中,作用範圍結束,變數空間自動釋放 3 區域性變數無缺省初始值 三 靜態變數 1 靜態變數可以被所有物件...