Java 變數作用域
阿新 • • 發佈:2022-05-08
變數作用域
變數作用域,即變數可被訪問的範圍
Java中變數分為全域性變數
、區域性變數
在類的的變數是有作用域這個概念的,Java 中除了屬性【類屬性】是全域性變數,其他變數都是區域性變數,即只能在這個方法或程式碼塊中訪問
全域性變數
全域性變數即定義在方法/程式碼塊之外的變數為全域性變數,它的作用域是全域性作用域,即整個原始檔。
全域性變數可以新增訪問修飾符
!全域性變數有預設值!
class ... { public static void main (String[] args) { System.out.println(new VarTest().globalVar); } } class VarTest{ // 全域性變數可以直接使用 // 因為有預設值 int globalVar; }
類屬性的生命週期
類屬性的宣告週期從例項化物件開始,直到程式結束或沒有任何變數指向這個物件。
區域性變數
區域性變數即定義在方法體內或程式碼塊內的變數稱為區域性變數,它的作用域為區域性作用域,即:僅在定義這個變數的方法體或程式碼塊內可訪問。
區域性變數不能新增訪問修飾符
在不同的方法變數與變數之間互不影響
!區域性變數沒有預設值!
class ... { public static void main (String[] args) { new VarTest().function(); } } class VarTest{ public void function () { int num; // 會報錯 // 因為區域性變數沒有預設值 // 需要先賦值後使用 System.out.println(num); } }
區域性變數可以與全域性變數重名
區域性變數的生命週期
從呼叫方法到方法結束,即隨著方法的執行而產生,隨著方法的結束而銷燬。
變數的訪問順序
區域性變數可以與全域性變數重名,在訪問時,按照就近原則訪問,即:如果在當前方法/程式碼塊中存在這個變數就訪問這個變數,如果當前方法/程式碼塊中不存在該變數,則會去尋找有沒有這個名稱的全域性變數,如果有訪問,如果沒有報錯。