JAVA基礎(chǔ):JAVA中的作用域說明

字號(hào):

作用域: 指可訪問變量的一段代碼,在程序中不同的地方聲明的變量具有不同的作用域,例如:局部變量,全局變量等。
    局部變量(Local Variable)又叫做自動(dòng)變量(Automatic Variable)、臨時(shí)變量(Temporary Variable)或棧變量(Stack Variable),它是定義在方法或方法里的程序塊中的變量。局部變量的重要特點(diǎn)是只能被包含它的方法或方法里的程序塊使用。另外,局部變量在被使用前一定要初始化,否則會(huì)帶來錯(cuò)誤。
    和局部變量相應(yīng)的是全局變量(Global Variable),有兩種,其中一種叫做實(shí)例變量(Instance Variable),另一種叫做類變量(Class Variable)。實(shí)例變量是定義在類中的變量,可以被類的所有對(duì)象使用,所以作用范圍是全局的。另外,實(shí)例變量在被使用前不需要初始化,會(huì)獲得一個(gè)默認(rèn)值。類變量也是定義在類中的變量,只是多了static關(guān)鍵字修飾,它的作用域是類(Class)范圍內(nèi)。
    class Something {
    int i;
    public void doSomething() {
    System.out.println("i = " + i);
    }
    }
    有什么錯(cuò)呢? 看不出來啊。
    答案: 正確。輸出的是"i = 0"。int i屬於instant variable (實(shí)例變量,或叫成員變量)。instant variable有default value。int的default value是0。
    很多同學(xué)認(rèn)為這個(gè)題是錯(cuò)誤的,以為i如果沒有賦值,那么它就不能進(jìn)行操作。在這個(gè)題目中,i是實(shí)例變量,基本數(shù)據(jù)類型int的初始值為0.如果int i;這句話在方法里面,它就是局部變量,那么,如果不給它賦初值的話,它就無法運(yùn)行。
    這是一個(gè)很基本的問題,大家都很少去關(guān)注這些。但是越基本的東西越不容易引起注意,在使用的時(shí)候就越容易出錯(cuò)。大家要引以為鑒。