點擊查看:2015計算機等級考試二級Java入門教程章節(jié)匯總
點擊查看:2015計算機等級考試二級Java入門教程第三章匯總
3.5 變量的作用域
變量的作用域(scope)是指變量能夠被引用的區(qū)域,也就是可以使用該變量的程序范圍。截止到目前為止,我們在程序例子中聲明的變量都被定義在main( )方法內(nèi)。在一個方法內(nèi)聲明的變量被稱作局部變量(local variable),它們只能在聲明它們的方法中被訪問,但并不是在聲明它們的方法中的任何位置都可訪問。請看下面這個例子,它在方法中又內(nèi)嵌了一個塊。
int a=1; //Declear and define a
//Reference to a is ok here
//keference to b here is an error
{
//Reference to a here is ok
//Reference to b here is untill an error
int b=2; //Delear and define b
//Reference to a and b are Ok here -b exists new
}
//Reference to b is an error here here-it doesn't exist
//Reference to a is still ok though
一個變量在聲明前并不存在,只有被聲明后才可以對它進(jìn)行引用。在定義它的塊結(jié)束前一直存在,其中包括該塊內(nèi)嵌套的所有塊。變量b只能在最內(nèi)層的塊中存在。在最內(nèi)層的大括號之后,b就不存在了。而變量a在大括號結(jié)束前一直存在。
因此,局部變量的訪問規(guī)則很簡單。它們可被訪問的范圍是:在程序中,從聲明它們的位置開始,到聲明它們的塊結(jié)束處。在聲明它們的塊結(jié)束之后,就不能再被訪問了。我們可以用下個例子演示它:
試試看--作用域。
我們將定義方法main()說明如何應(yīng)用變量作用域工作。首先,我們聲明并初始化變量outer,然后開始一個內(nèi)層塊。在該塊內(nèi),我們將定義一個變量inner.在塊結(jié)束之后,我們將再次聲明變量inner并再次使用它。
piblic class scope
{
syetem.out.println("inner *"+inner);//Uncooment this for an error 1 error
如何工作
在這個程序中的方法main()內(nèi)只嵌套了一個塊。變量outer在開始處就被定義,所以在方法main()的任何地方,包括嵌套的所有塊中都可以引用它。變量不能被重復(fù)聲明,若將注釋標(biāo)志刪除,在內(nèi)層塊中被注釋起來的變量outer的聲明語句就會導(dǎo)致編譯錯誤。
變量inner在嵌套塊內(nèi)定義并被賦初始值2,從它的聲明處到內(nèi)層塊結(jié)束處,你都可以它進(jìn)行引用。在內(nèi)層塊結(jié)尾的大括號之后,變量inne:不再存在,所以被注釋起來的引用~的輸出語句是非法的。然而,因為變量mtier己經(jīng)不存在,所以我們可以用同樣的名字聲明另一個變量并將它賦初值為3.
注意:所有這些都說明了局部變量的生存期。重新定義一個已經(jīng)不存在的變量并不是一個好的做法,因為這很容易引起混亂。雖然,我們在上述例子中僅使用了int類型變量,但是變量的作用域規(guī)律對所有類型的變量來說都是一樣的。
有另一種被稱為類變量的變量,當(dāng)用一種特定的方法聲明它們時,它們可以擁有很長的生命期。例如,在標(biāo)準(zhǔn)的類Math中變量PI和E就是這種類型變量,只要你的程序處于運行;它們就可被使用,還有另一種被稱為實例變量的變量,它是構(gòu)造類對象,我們將在第5章中進(jìn)一步學(xué)習(xí)這方面的內(nèi)容。
相關(guān)推薦:
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |