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