回覆列表
  • 1 # 看我老老實實睡覺

    (1)靜態區域性變數在函式內定義,但不象自動變數那樣,當呼叫時就存在,退出函式時就消失。靜態區域性變數始終存在著,也就是說它的生存期為整個源程式。  (2)靜態區域性變數的生存期雖然為整個源程式,但是其作用域仍與自動變數相同,即只能在定義該變數的函式內使用該變數。退出該函式後,儘管該變數還繼續存在,但不能使用它。    (3)對基本型別的靜態區域性變數若在說明時未賦以初值,則系統自動賦予0值。而對自動變數不賦初值,則其值是不定的。根據靜態區域性變數的特點,可以看出它是一種生存期為整個原始檔的量。雖然離開定義它的函式後不能使用,但如再次呼叫定義它的函式時,它又可繼續使用,而且儲存了前次被呼叫後留下的值。因此,當多次呼叫一個函式且要求在呼叫之間保留某些變數的值時,可考慮採用靜態區域性變數。雖然用全域性變數也可以達到上述目的,但全域性變數有時會造成意外的副作用(尤其是短名全域性變數的變數名汙染很嚴重),因此仍以採用區域性靜態變數為宜。簡單的說靜態區域性變數與全域性變數最明顯的區別就在於:全域性變數在其定義後所有函式都能用,但是靜態區域性變數只能在一個函數里面用。

  • 2 # 使用者6354188383803

    首先兩個變數都是定義在類中的,

    靜態的全域性變數就是static宣告的, 類可以不用new 就可以呼叫了

    而且全域性變數一般是指成員變數, 也叫類的屬性變數, 欄位等, 是需要把類new出來才能呼叫的:

    public class Test{

    static int min = 10;

    int max =100;

    public static void main(String[] args){

    int a = Test.min; //這個就是呼叫了全域性靜態變數

    Test tt = new Test();

    int b = tt.max; //這個主是呼叫了非靜態的全域性變數

    }

    }

  • 中秋節和大豐收的關聯?
  • 金線蓮用什麼施肥?