在Java中并不存在全局變量的概念,但是我們可以通過(guò)static來(lái)實(shí)現(xiàn)一個(gè)“偽全局”的概念,在Java中static表示“全局”或者“靜態(tài)”的意思,用來(lái)修飾成員變量和成員方法,當(dāng)然也可以修飾代碼塊。
怎么使用static
1.static變量
static修飾的變量我們稱之為靜態(tài)變量,沒有用static修飾的變量稱之為實(shí)例變量,他們兩者的區(qū)別是:
static靜態(tài)變量是隨著類加載時(shí)被完成初始化的,它在內(nèi)存中僅有一個(gè),且JVM也只會(huì)為它分配一次內(nèi)存,同時(shí)類所有的實(shí)例都共享靜態(tài)變量,可以直接通過(guò)類名來(lái)訪問(wèn)它。
但是實(shí)例變量則不同,它是伴隨著實(shí)例的,每創(chuàng)建一個(gè)實(shí)例就會(huì)產(chǎn)生一個(gè)實(shí)例變量,它與該實(shí)例同生共死。
所以我們一般在這兩種情況下使用靜態(tài)變量:對(duì)象之間共享數(shù)據(jù)、訪問(wèn)方便。
2.static方法
static修飾的方法我們稱之為靜態(tài)方法,我們通過(guò)類名對(duì)其進(jìn)行直接調(diào)用。由于他在類加載的時(shí)候就存在了,它不依賴于任何實(shí)例,所以static方法必須實(shí)現(xiàn),也就是說(shuō)他不能是抽象方法abstract。
Static方法是類中的一種特殊方法,我們只有在真正需要他們的時(shí)候才會(huì)將方法聲明為static。如Math類的所有方法都是靜態(tài)static的。
3.static代碼塊
被static修飾的代碼塊,我們稱之為靜態(tài)代碼塊,靜態(tài)代碼塊會(huì)隨著類的加載一塊執(zhí)行,而且他可以隨意放,可以存在于該了的任何地方。
static的弊端
1.生命周期過(guò)長(zhǎng),隨著類的消失而消失
2.靜態(tài)方法只能訪問(wèn)靜態(tài)成員
3.靜態(tài)方法中不能使用this,super關(guān)鍵字
4.static變量在定義時(shí)必須要進(jìn)行初始化,且初始化時(shí)間要早于非靜態(tài)變量
總結(jié):無(wú)論是變量,方法,還是代碼塊,只要用static修飾,就是在類被加載時(shí)就已經(jīng)”準(zhǔn)備好了”,也就是可以被使用或者已經(jīng)被執(zhí)行,都可以脫離對(duì)象而執(zhí)行。反之,如果沒有static,則必須要依賴于對(duì)象實(shí)例。
Javase視頻教程
2020JavaSE進(jìn)階:http://www.bjpowernode.com/javavideo/144.html
以上就是北大青鳥長(zhǎng)沙麓谷校區(qū)java培訓(xùn)機(jī)構(gòu)的小編針對(duì)“Javase輕松入門高級(jí)教程,static怎么用”的內(nèi)容進(jìn)行的回答,希望對(duì)大家有所幫助,如有疑問(wèn),請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。
Java教程