Java Static關(guān)鍵字詳解
提起static關(guān)鍵字,相信大家絕對(duì)不會(huì)陌生,但是,想要完全說(shuō)明白,猛的一想,發(fā)現(xiàn)自己好像又說(shuō)不太明白... ...比方說(shuō),昨天被一個(gè)同學(xué)問(wèn)起的時(shí)候... ... 當(dāng)然,不是所有人都像我一樣學(xué)藝不精的,但是像這樣的基礎(chǔ)不牢的人應(yīng)該不少,因?yàn)槌S?,所以用大家都?huì),但是談到精細(xì)之處都?jí)騿?。這篇博客是我翻出我原來(lái)的學(xué)習(xí)筆記再加上自己看的一些博客整理出來(lái)的,供基礎(chǔ)知識(shí)不怎么牢靠的同學(xué)參考參考。
1. static 關(guān)鍵字要解決的問(wèn)題
這里摘錄一下《Java編程思想(第四版)》里關(guān)于static關(guān)鍵字的一段原話:(P29)通常來(lái)說(shuō),當(dāng)創(chuàng)建類時(shí),就是在描述那個(gè)類的對(duì)象的外觀與行為。除非用new創(chuàng)建那個(gè)對(duì)象,否則,實(shí)際上并未獲得任何對(duì)象。執(zhí)行new來(lái)創(chuàng)建對(duì)象的時(shí)候,數(shù)據(jù)存儲(chǔ)空間才被分配,其方法才供外界調(diào)用。有兩種情形用上述方法是無(wú)法解決的。一種情形是,只想為某特定域分配單一存儲(chǔ)空間,而不去考慮究竟要?jiǎng)?chuàng)建多少個(gè)對(duì)象,甚至根本不需要?jiǎng)?chuàng)建任何對(duì)象。另一種情形是,希望某個(gè)方法不與包含他的類的任何對(duì)象關(guān)聯(lián)在一起。也就是說(shuō),即使沒(méi)有創(chuàng)建對(duì)象,也能夠調(diào)用方法。簡(jiǎn)單來(lái)說(shuō),static的主要目的就是創(chuàng)建獨(dú)立于具體對(duì)象的域變量與方法。
2. static修飾的變量或方法或類的加載時(shí)機(jī)
在加載類的同時(shí)加在static修飾的部分。(注意:這個(gè)時(shí)候,還不存在具體對(duì)象,并且這個(gè)過(guò)程只進(jìn)行一次)
3. 通過(guò)代碼示例來(lái)分別看看靜態(tài)變量、靜態(tài)方法、靜態(tài)類的效果
3.1 靜態(tài)變量
public class StaticTest{ pub