Java 成員變數和區域性變數

2021-06-28 04:05:13 字數 1601 閱讀 4812

成員變數:在類範圍裡定義的變數。成員變數又分為例項屬性(不用static

修飾)和類屬性(用static

修飾)。類屬性和例項屬性統稱為成員變數。

類屬性在類的準備階段開始存在,直到系統銷毀這個類,類屬性與類的生存範圍相同。例項屬性從類的例項被建立開始存在,直到系統銷毀這個例項,例項屬性與對應例項生存範圍相同。

成員變數無須顯式初始化,只要定義了類屬性和例項屬性,則系統會在這個類的準備階段或建立類的例項時進行預設初始化。例項也可訪問類屬性,同乙個類的多個例項訪問類屬性時,實際上訪問的是同乙個類屬性,訪問的都是該類的屬性

區域性變數:在方法內定義的變數。區域性變數分為形參(方法簽名中定義的變數)、方法區域性變數(在方法內定義的變數)和**塊區域性變數(在**塊中定義的變數)。

形參作用域在整個方法內有效。方法區域性變數在方法體內的定義的地方開始有效,到方法結束時失效。**塊區域性變數,從定義該變數的地方生效,到該**塊結束時失效。

區域性變數除形參外,都必須顯式初始化(指定初始值)之後才能訪問,否則將出錯。(形參的初始化在呼叫該方法時由系統完成)

不能無限制的定義成員變數。當定義乙個成員變數是,成員變數將被放置到堆記憶體中去,成員變數的範圍將擴大到類存在範圍或者物件存在範圍,這種範圍的擴大有兩個害處:

1、增大了變數的生存時間,將導致更大的系統開銷;

2、擴大了變數的作用域,不利於提高程式的內聚性。

以下情形,應該考慮使用成員變數:

1、需要定義的變數用於描述某個類或某個物件的固有資訊,這種變數應定義為成員變數。如果這種資訊對這個類的所有例項完全相同,或者說它是類相關的即類的屬性性質變,該類的所有例項的性質也同樣改變,這種類相關的資訊應該定義為類屬性(static

修飾);如果這種資訊是例項相關的,即不同的例項,例項的資訊可能不同,這種例項相關的資訊應該定義成例項屬性(不用static

修飾)。

2、在類中,需要定義乙個變數來儲存該類或者例項執行時的狀態資訊,這種用於儲存某個類,或者某個例項狀態資訊的變數通常應該定義為成員變數

3、如果某個資訊需要在某個類的多個方法之間進行共享,則這個資訊應該用成員變數來儲存。

即使在程式中使用區域性變數,也應該盡可能地縮小區域性變數的作用範圍,區域性變數的作用範圍越小,它在記憶體裡停留的時間就越短,程式執行效能越好。

成員變數和區域性變數

定義類其實就是在定義類中的成員 成員 成員變數 屬性,成員函式 行為 成員變數和區域性變數的區別 1.成員變數定義在類中,整個類中都可以訪問 區域性變數定義在函式 語句 區域性 塊中,只在所屬的區域有效 2.成員變數存在於堆記憶體的物件中。區域性變數存在於棧記憶體的方法中。3.存活時間不同 成員變數...

成員變數和區域性變數

成員變數 寫在 interence和 end之間大括號之間的變數 例項變數,屬性 注意 1.成員變數只能通過物件來訪問 2.成員變數不能離開類,離開類之後就不是成員變數 3.成員變數不能在定義的同時初始化 儲存 當前物件對應的堆得儲存空間中 堆區 特點 堆區儲存的資料不會自動釋放,只能手動釋放 區域...

成員變數和區域性變數

成員變數 區域性變數 在類內部定義的變數 在方法內部定義的變數 有訪問許可權修飾符 沒有訪問許可權修飾符 有靜態成員變數 沒有靜態區域性變數 系統可以自動為成員變數賦初值 系統不會為區域性變數賦初值 只要類在某個作用域中,其字段也 也稱成員變數 也在該作用域內 區域性變數存在於表示宣告該變數的塊語句...