java静态局部变量_java中成员变量,局部变量,静态变量的辨析
轉(zhuǎn)自百度:https://baijiahao.baidu.com/s?id=1625360816541592483&wfr=spider&for=pc
1.java中成員變量,局部變量,靜態(tài)變量的辨析
Java中的變量大致分為 成員變量 和 局部變量 兩大類。
成員變量:在類體里面定義的變量稱為成員變量;
如果該成員變量有 static 關(guān)鍵字修飾,則該成員變量稱為靜態(tài)變量或類變量;
如果該成員變量沒有 static 關(guān)鍵字修飾,則該成員變量被稱為非靜態(tài)變量或?qū)嵗兞俊?/p>
局部變量:形參、方法內(nèi)定義的變量、代碼塊中定義的變量,都屬于局部變量。
下表是三者的區(qū)別:(下面這張圖很經(jīng)典好好理解)注:不要的把成員變量和靜態(tài)變量混淆在一起,兩者區(qū)別還是很大的
2.三者的根本區(qū)別在于:所在存儲(chǔ)位置的不同決定了不同的特性。
下面主要介紹一下靜態(tài)變量的利弊:
特點(diǎn):
1、想要實(shí)現(xiàn)對(duì)象中的共性數(shù)據(jù)的對(duì)象共享。可以將這個(gè)數(shù)據(jù)進(jìn)行靜態(tài)修飾。
2、被靜態(tài)修飾的成員,可以直接被類名所調(diào)用。也就是說,靜態(tài)的成員多了一種調(diào)用方式。類名.靜態(tài)方式。
3、靜態(tài)隨著類的加載而加載。而且優(yōu)先于對(duì)象存在。
弊端:
1、有些數(shù)據(jù)是對(duì)象特有的數(shù)據(jù),是不可以被靜態(tài)修飾的。因?yàn)槟菢拥脑?#xff0c;特有數(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)變量?
在程序運(yùn)行期間,類中的靜態(tài)變量其內(nèi)存空間對(duì)所有該類的實(shí)例是共享的,因此在某些時(shí)候,為了節(jié)省內(nèi)存空間開銷,共享資源,我們可以將類中的變量聲明為靜態(tài)變量。但是因?yàn)殪o態(tài)變量生命周期太長(zhǎng),并且不易被系統(tǒng)回收,所有如果使用不合理,就會(huì)適得其反,從而造成大量?jī)?nèi)存的浪費(fèi)。因此建議在全部符合下列條件的情況下才使用靜態(tài)變量:
(1)變量所包含的對(duì)象體積較大,占用內(nèi)存較多
(2)變量所包含的對(duì)象生命周期較長(zhǎng)
(3)變量所包含的對(duì)象數(shù)據(jù)穩(wěn)定
(4)該類的實(shí)例有對(duì)該變量包含對(duì)象的共享需求
總結(jié):
盡管三者的本質(zhì)都是變量,可是使用時(shí)卻有相當(dāng)大的區(qū)別,稍不留神就可能陷入陷阱。且先記住:在一個(gè)類中,如果一個(gè)變量能夠用來描述一個(gè)類的屬性,那就定義為成員變量,否則,它就應(yīng)該定義為局部變量。而如果一個(gè)變量在全局中都能使用(某個(gè)內(nèi)容是被所有對(duì)象所共享),那么我們就可以把這個(gè)變量用static來修飾,即為靜態(tài)變量。
超強(qiáng)干貨來襲 云風(fēng)專訪:近40年碼齡,通宵達(dá)旦的技術(shù)人生總結(jié)
以上是生活随笔為你收集整理的java静态局部变量_java中成员变量,局部变量,静态变量的辨析的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 影驰电竞内存,游戏加速利器
- 下一篇: js java socket_js使用W