1. 程式人生 > >Java中成員變數、區域性變數、全域性變數、靜態變數存在位置及初始化

Java中成員變數、區域性變數、全域性變數、靜態變數存在位置及初始化

根據定義變數位置的不同,可以將變數分為成員變數和區域性變數。
成員變數是 定義在一個類的變數:類中方法外
區域性變數是定義在一個方法內的變數:方法中

成員變數分為:
靜態屬性:隨類的存在而存在,是在類載入的初始化
非靜態屬性:隨例項的屬性存在而存在。

區域性變數:
區域性變數不能加static,包括protected, private, public這些也不能加。區域性變數儲存在棧中。
區域性程式設計必須在宣告時初始化。

成員變數和區域性變數區別:
成員變數可以不顯式初始化,它們可以由系統設定預設值;區域性變數沒有預設值,所以必須設定初始賦值。
成員變數存在於堆記憶體,區域性變數存在於棧記憶體。

靜態變數:類中方法外,用static修飾
生命週期:JVM第一次讀到這個類並載入類時開始,類銷燬不存在。
類載入過程:

  1. 載入父類(如果父類已經載入過,則不在載入)。
  2. 初始化靜態屬性 。
  3. 按順序的初始化靜態程式碼塊 初始化的前提就是分配空間 。

靜態變數存在於方法區即靜態區(方法區包含整個程式中唯一存在的元素)

全域性變數:在java中全域性變數也稱成員變數,是建立物件的時候分配記憶體的。
建立物件過程為:

  1. 分配空間。
  2. 建立父類物件。
  3. 初始化成員變數。
  4. 呼叫構造方法建立一個物件。

方法(包括靜態方法)中不能有靜態變數,方法中存在的是區域性變數,而不是靜態變數。靜態變數是定義在類中,方法體外面的。