1. 程式人生 > 其它 >Java 變數作用域

Java 變數作用域

變數作用域

變數作用域,即變數可被訪問的範圍

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);
    }
}

區域性變數可以與全域性變數重名

區域性變數的生命週期

從呼叫方法到方法結束,即隨著方法的執行而產生,隨著方法的結束而銷燬。

變數的訪問順序

區域性變數可以與全域性變數重名,在訪問時,按照就近原則訪問,即:如果在當前方法/程式碼塊中存在這個變數就訪問這個變數,如果當前方法/程式碼塊中不存在該變數,則會去尋找有沒有這個名稱的全域性變數,如果有訪問,如果沒有報錯。