1. 程式人生 > >java全域性變數和區域性變數

java全域性變數和區域性變數

全域性變數是一個執行時刻實體,它在程式的整個執行過程中都存在。全域性變數生命週期為程式開始到程式結束。 全域性變數顯示初始化時,或者未初始化時,在程式映像中有不同的分割槽:已初始化的全域性變數是可執行模組的一部分。未初始化的全域性變數則不是可執行模組的一部分,只有當定義它們的程式被呼叫時(即執行時),才分配空間,宣告或定義時並不分配。未初始化的全域性變數在執行時被初始化為0或null。
區域性變數也叫自動變數,它宣告在函式塊內,作用範圍也在函式快內,不能同一原始檔的其它函式使用,也不能其他檔案中的函式使用,區域性變數儲存在棧中。無論區域性變數顯示初始化,或者未初始化,都只有當定義它們的程式快被呼叫時(及執行時),才分配空間,宣告或定義時並不分配,區域性變數不是可執行每模組的一部分!!除非顯示地區域性變數進行初始化,否則,它們的初始值是不確定的。區域性變數在使用之前必須初始化。


全域性變數沒有宣告在任何一個函式內,作用範圍在程式執行始終存在,能被同一原檔案的任何函式使用,
也能被其他檔案中的函式使用,但是使用extern關鍵字。方法執行完後,隨之銷燬結束。
全域性變數儲存在資料段中。
具體來說,全域性變數和區域性變數的區別如下:

  1. 作用域不同:全域性變數的作用域為整個程式,而區域性變數的作用域為當前函式或迴圈等

  2. 記憶體儲存方式不同:全域性變數儲存在全域性資料區中,區域性變數儲存在棧區

  3. 生命期不同:全域性變數的生命期和主程式一樣,隨程式的銷燬而銷燬,區域性變數在函式內部或迴圈內部,隨函式的退出或迴圈退出就不存在了

  4. 使用方式不同:全域性變數在聲明後程式的各個部分都可以用到,但是區域性變數只能在區域性使用。函式內部會優先使用區域性變數再使用全域性變數