java中的成員變量和局部變量

  靜態變量能夠用來計數。
【注意:假如 static int a=0,計數到20。可是當服務器重啓時,靜態變量又會被從新初始化a=0,實際業務不符合】
java

----------------------服務器

java 中的變量大體分爲 成員變量 局部變量 兩大類。

1、成員變量:
    在類體裏面定義的變量稱爲成員變量;
    若是該成員變量有 static 關鍵字修飾,則該成員變量稱爲 靜態變量  類變量
    若是該成員變量沒有 static 關鍵字修飾,則該成員變量被稱爲 非靜態變量  實例變量spa

1、類變量 (靜態變量)
    1 能夠向前引用
    2 變量屬於類自己
    3 類變量不依賴類的實例,類變量只在初始化時候在棧內存中被分配一次空間,不管類的實例被建立幾回,都再也不爲類變量分配空間
    4 經過類的任意一個實例來訪問類變量,底層都將將其轉爲經過類自己來訪問類變量,它們的效果是同樣的
    5 一旦類變量的值被改變,經過類或類的任意一個實例來訪問類變量,獲得的都將是被改變後的值
    6 將在類的初始化以前初始化

 2、實例變量(非靜態變量)
    1 不能向前引用,若是向前引用,則稱爲非法向前引用,這是不容許的
    2 變量屬於類的實例對象
    3 隨着類的實例被建立而分配內存空間
2、局部變量:
    形參、方法內定義的變量、代碼塊中定義的變量,都屬於局部變量。對象

注:形參和方法內定義的變量不能用static修飾,能夠用final修飾內存

下面代碼,編譯錯誤編譯

public void test(static int b){
       static int a = b;
   }
***********************************************************************************

非靜態代碼塊
    直接由 { } 包起來的代碼,稱爲非靜態代碼塊

靜態代碼塊
    直接由 static { } 包起來的代碼,稱爲靜態代碼塊

類變量(靜態變量)、實例變量(非靜態變量)、靜態代碼塊、非靜態代碼塊 的初始化時機
     static 關鍵字修飾的(如:類變量[靜態變量]、靜態代碼塊)將在在類加載的時候(沒有new對象的時候就進行初始化)類被初始化建立實例對象以前被初始化,並且是按順序從上到下依次被執行。
    沒有 static 關鍵字修飾的(如:實例變量[非靜態變量]、非靜態代碼塊)初始化其實是會被提取到類的構造器中被執行的,可是會比類構造器中的代碼塊優先執行到,其也是按順序從上到下依次被執行。test

相關文章
相關標籤/搜索