在Java語(yǔ)言中,變量分為局部變量和全局變量?jī)煞N。兩者在作用范圍、存儲(chǔ)位置、生命周期等方面存在很大的差異,下面我們來(lái)詳細(xì)了解一下。
局部變量,是指在一個(gè)方法或者一個(gè)語(yǔ)句塊中定義的變量,其作用范圍僅限于該方法或語(yǔ)句塊,方法或語(yǔ)句塊執(zhí)行完畢后,該變量所占用的內(nèi)存空間就被釋放了,因此其生命周期也是很短暫的。在Java中,基本數(shù)據(jù)類型的局部變量不會(huì)有默認(rèn)值,需要在使用前進(jìn)行初始化賦值,否則會(huì)編譯報(bào)錯(cuò)。
public void test() { int a = 10; //局部變量a System.out.println(a); }
而全局變量,是指在類體中定義的變量,即成員變量,其作用范圍包括整個(gè)類,可以被該類的所有方法訪問(wèn),其生命周期隨著該類的對(duì)象創(chuàng)建而存在,對(duì)象被銷毀后,該變量所占用的內(nèi)存空間才會(huì)被釋放。Java中成員變量有默認(rèn)值,整型的默認(rèn)值為0,布爾類型的默認(rèn)值為false,字符類型的默認(rèn)值為空字符,引用類型的默認(rèn)值為null。
public class Test { int a = 10; //全局變量a public void test1() { System.out.println(a); } public void test2() { System.out.println(a+10); } }
需要注意的是,在Java中,局部變量與全局變量同名時(shí),局部變量?jī)?yōu)先級(jí)更高,即使用該名稱時(shí)會(huì)先從局部變量中查找,若找不到再查找全局變量。