1.非靜態(tài)成員變量
成都創(chuàng)新互聯(lián)專注于永城企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站設(shè)計(jì),商城系統(tǒng)網(wǎng)站開發(fā)。永城網(wǎng)站建設(shè)公司,為永城等地區(qū)提供建站服務(wù)。全流程按需策劃,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,成都創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)
當(dāng)成員變量為非靜態(tài)成員變量且對當(dāng)前類進(jìn)行實(shí)例化時(shí),將會產(chǎn)生死循環(huán)
例子:
public class ConstructorCls { private ConstructorCls obj=new ConstructorCls(); }
public class TestC { public static void main(String[] args) { ConstructorCls c =new ConstructorCls(); } }
結(jié)果:
Exception in thread "main" java.lang.StackOverflowError at com.ConstructorCls.<init>(ConstructorCls.java:7) at com.ConstructorCls.<init>(ConstructorCls.java:7) at com.ConstructorCls.<init>(ConstructorCls.java:7)
分析:當(dāng)new ConstrutorCls() 會對ConstrutorCls進(jìn)行實(shí)例 化,后然對這個(gè)類的成員obj進(jìn)行初始化,obj又是對自已所在類進(jìn)行實(shí)列化,這一樣一直下去,直到StackOverflowError
2.靜態(tài)成員變量
靜態(tài)成員變量是屬于類的,不會出現(xiàn)死循環(huán)
例如:
public class ConstructorCls { private static ConstructorCls obj=new ConstructorCls(); }
public class TestC { public static void main(String[] args) { ConstructorCls c =new ConstructorCls(); } }
分析:當(dāng)new ConstructorCls()時(shí),首先將ConstructorCls加截到JVM中,在加載時(shí)對該類的靜態(tài)成員進(jìn)行初始化(僅加載時(shí)初始化一次),初始化obj對像,new 一個(gè)ConstructorCls, 這里的一個(gè)關(guān)鍵點(diǎn) 是這個(gè)靜態(tài)成員是屬于類的,并不屬于某一個(gè)實(shí)例對像,所以不會產(chǎn)生死循環(huán)。
以上就是小編為大家?guī)淼腏ava非靜態(tài)成員變量之死循環(huán)(詳解)的全部內(nèi)容了,希望大家喜歡哦~
如果大家想了解更多游戲活動(dòng)與游戲攻略,請持續(xù)關(guān)注本站,本站小編將在第一時(shí)間為大家?guī)碜詈每?、最好玩、最新鮮的游戲資訊。更多精彩內(nèi)容,盡在jb51游戲頻道!
網(wǎng)頁名稱:Java非靜態(tài)成員變量之死循環(huán)(詳解)
文章位置:http://jinyejixie.com/article48/jjgdhp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站、軟件開發(fā)、網(wǎng)站排名、品牌網(wǎng)站建設(shè)、商城網(wǎng)站、
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)