更新時(shí)間:2020-05-27 16:23:34 來源:動(dòng)力節(jié)點(diǎn) 瀏覽2153次
由static修飾的變量稱為靜態(tài)變量,其實(shí)質(zhì)上就是一個(gè)全局變量。如果某個(gè)內(nèi)容是被所有對(duì)象所共享,那么該內(nèi)容就應(yīng)該用靜態(tài)修飾;沒有被靜態(tài)修飾的內(nèi)容,其實(shí)是屬于對(duì)象的特殊描述。
不同的對(duì)象的實(shí)例變量將被分配不同的內(nèi)存空間,如果類中的成員變量有類變量,那么所有對(duì)象的這個(gè)類變量都分配給相同的一處內(nèi)存,改變其中一個(gè)對(duì)象的這個(gè)類變量會(huì)影響其他對(duì)象的這個(gè)類變量,也就是說對(duì)象共享類變量。
1.兩個(gè)變量的生命周期不同
2.調(diào)用方式不同
3.別名不同
4.數(shù)據(jù)存儲(chǔ)位置不同
特點(diǎn):
弊端:
1.有些數(shù)據(jù)是對(duì)象特有的數(shù)據(jù),是不可以被靜態(tài)修飾的。因?yàn)槟菢拥脑挘赜袛?shù)據(jù)會(huì)變成對(duì)象的共享數(shù)據(jù)。這樣對(duì)事物的描述就出了問題。所以,在定義靜態(tài)時(shí),必須要明確,這個(gè)數(shù)據(jù)是否是被對(duì)象所共享的。
2.靜態(tài)方法只能訪問靜態(tài)成員,不可以訪問非靜態(tài)成員。
因?yàn)殪o態(tài)方法加載時(shí),優(yōu)先于對(duì)象存在,所以沒有辦法訪問對(duì)象中的成員。
3.靜態(tài)方法中不能使用this,super關(guān)鍵字。
因?yàn)閠his代表對(duì)象,而靜態(tài)在時(shí),有可能沒有對(duì)象,所以this無法使用。
什么時(shí)候定義靜態(tài)成員呢?或者說:定義成員時(shí),到底需不需要被靜態(tài)修飾呢?
成員分兩種:
1.成員變量。(數(shù)據(jù)共享時(shí)靜態(tài)化)
該成員變量的數(shù)據(jù)是否是所有對(duì)象都一樣:
如果是,那么該變量需要被靜態(tài)修飾,因?yàn)槭枪蚕淼臄?shù)據(jù)。
如果不是,那么就說這是對(duì)象的特有數(shù)據(jù),要存儲(chǔ)到對(duì)象中。
2.成員函數(shù)。(方法中沒有調(diào)用特有數(shù)據(jù)時(shí)就定義成靜態(tài))
如果判斷成員函數(shù)是否需要被靜態(tài)修飾呢?
只要參考,該函數(shù)內(nèi)是否訪問了對(duì)象中的特有數(shù)據(jù):
如果有訪問特有數(shù)據(jù),那方法不能被靜態(tài)修飾。
如果沒有訪問過特有數(shù)據(jù),那么這個(gè)方法需要被靜態(tài)修飾。
1.成員變量所屬于對(duì)象。所以也稱為實(shí)例變量。
2.成員變量存在于堆內(nèi)存中。
3.成員變量隨著對(duì)象創(chuàng)建而存在。隨著對(duì)象被回收而消失。
4.成員變量只能被對(duì)象所調(diào)用。
以上就是動(dòng)力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)的小編針對(duì)“Java編程語言,Java成員變量與類變量的區(qū)別”的內(nèi)容進(jìn)行的回答,希望對(duì)大家有所幫助,如有疑問,請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。
相關(guān)閱讀
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)
初級(jí) 202925
初級(jí) 203221
初級(jí) 202629
初級(jí) 203743