學(xué)習(xí)的關(guān)鍵不在記住語(yǔ)法,而要去思考設(shè)計(jì)者為什么要發(fā)明這個(gè)語(yǔ)法或標(biāo)識(shí)。
拿static來(lái)舉例,static是用來(lái)修飾類的成員變量和成員函數(shù)的,只要修飾了成員變量,那么該成員變量會(huì)被所有該類創(chuàng)建出的實(shí)例所共享,可是為什么要弄個(gè)成員變量給所有實(shí)例共享呢?每個(gè)對(duì)象都有自己的不也行嗎。問(wèn)題繼續(xù)往下走,我們拿Person來(lái)舉例。
class Person(){ String name; Static String country="china";}Person p1=new Person();Person p2=new Person();Person.country;p1.country;創(chuàng)建2個(gè)Person類的實(shí)例,每個(gè)實(shí)例所特有的name將各自創(chuàng)建一份,而country將單獨(dú)放在內(nèi)存當(dāng)中的數(shù)據(jù)共享區(qū),既然是每個(gè)Person對(duì)象的國(guó)家都是中國(guó),那么,如果把country變量給每個(gè)Person實(shí)例都創(chuàng)建一份,將浪費(fèi)內(nèi)存空間。因此,把共有的成員變量放在公共數(shù)據(jù)區(qū)。
接下來(lái)分析下static修飾過(guò)的成員變量的特性: 1.隨著類的加載而加載 2.它可以被類名調(diào)用或者類對(duì)象調(diào)用 3.在類的對(duì)象被實(shí)例化之前就已經(jīng)存在 4.當(dāng)static修飾成員函數(shù)的時(shí)候,只能在該函數(shù)中調(diào)用靜態(tài)成員變量。(很簡(jiǎn)單,舉個(gè)反例,靜態(tài)成員函數(shù)也是在類對(duì)象實(shí)例化之前存在的,若在該函數(shù)中,出現(xiàn)this.name,此時(shí)this不是任何對(duì)象,因?yàn)閴焊€沒(méi)被實(shí)例化,所以出現(xiàn)非靜態(tài)變量name是錯(cuò)誤的。)
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注