大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 Java學習 Javase高級教程:for循環(huán)創(chuàng)建對象

Javase高級教程:for循環(huán)創(chuàng)建對象

更新時間:2020-03-13 10:08:28 來源:動力節(jié)點 瀏覽4349次


  有時候奇怪的發(fā)現(xiàn)往list添加數(shù)據(jù)的時候,一直被最后一個元素覆蓋,首先,我們得明白原理:


  在new一個對象的時候,對象的ID是唯一確定的;將對象add入list中時,放入list中的其實是對象的引用;而每次循環(huán)只是簡單的set對象的屬性,set新的屬性值,而add進list中的對象還是同一個對象id,也就是同一個對象;


  所以每次add之后,list發(fā)現(xiàn)對象引用和之前元素一樣,就覆蓋掉了之前add的對象。所以循環(huán)之后list中的對象是重復的對象。


  想要避免這個問題只要每次add時保證對象引用都是不同的即可,即每循環(huán)一次重新new一個對象。


  new的對象應該放在for循環(huán)內(nèi),每循環(huán)一次重新new一個新對象


Javase高級教程:for循環(huán)創(chuàng)建對象


  它的確是在main方法棧中先后創(chuàng)建了10個引用叫obj,然后每個obj指向不同的new出來的對象。


  關鍵是:每次循環(huán)體執(zhí)行完后,循環(huán)體內(nèi)定義的代碼塊局部變量、對象如果沒有被繼續(xù)引用,就立即被銷毀了;即obj變量、new出來的對象都被銷毀了。


  一般是循環(huán)一次一個新對象,所以如非必要,不要在循環(huán)里面創(chuàng)建對象。


  用內(nèi)存角度來解釋的話,在JVM的方法棧和堆內(nèi)存這兩個內(nèi)存中,當運行Objectobj=newObject();時,在方法棧的棧頂中放入Objectobj,然后在堆中生成一個Object對象,最后方法棧中的obj指向Object對象,這時完成一次循環(huán)的內(nèi)存動作。接著第二次循環(huán),newObject();又產(chǎn)生一個新的Object對象,然后方法棧中的obj指向新的Object對象,第一次循環(huán)的Object對象沒有被任務變量引用,成為了垃圾,等JVM垃圾回收器回收。其它循環(huán)以此類推了。


  在這里我提一下題外話,JVM有個優(yōu)秀的算法是,JVM的方法棧,一個方法的調(diào)用產(chǎn)生一個棧幀,這個棧幀在方法調(diào)用時計算出你有幾個局部變量,這個計算會過濾作用域的,如你的循環(huán)后面再建立一個局部變量,那JVM認為只有一個局部變量,因為你的Objectobj=newObject();在大括號內(nèi),出了大括號就沒有了,所以只需要一個位置來存放局部變量即可,也就是說運行到大括號時用這個位置來執(zhí)行代碼,出了大括號后下一個局部變量就可以接著使用這個棧的這個位置來執(zhí)行下面的代碼了


  再看一個例子:


Javase高級教程:for循環(huán)創(chuàng)建對象


  結(jié)果:


Javase高級教程:for循環(huán)創(chuàng)建對象


  解釋:


  在for循環(huán)內(nèi)部創(chuàng)建的話,每次執(zhí)行循環(huán)都會創(chuàng)建對象,沒什么特別明顯壞處,只是會消耗內(nèi)存。所以我們通常在for循環(huán)外部實例化對象,因為它執(zhí)行一次


  Objectobj是創(chuàng)建對象引用,引用的實例地址。newObject();是創(chuàng)建對象實例


  兩者都會占用系統(tǒng)資源。


  改進之前for循環(huán)中創(chuàng)建了10次引用和10實例,改進后是創(chuàng)建了1次引用,10實例。


  在方法執(zhí)行完后內(nèi)存資源會被回收


    以上就是動力節(jié)點Java培訓機構(gòu)小編介紹的“Javase高級教程:for循環(huán)創(chuàng)建對象”的內(nèi)容,希望對大家有幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務。


提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 日韩在线一区二区三区视频 | jizz中国视频| 欧美在线播放成人免费 | 日本一区二区成人教育 | 亚洲人人干 | 成人免费视频在线看 | 免费看国产精品久久久久 | 午夜精品aaa国产福利 | 亚洲视频污 | 亚洲七七久久精品中文国产 | 嘿咻成人免费视频欧美激情 | 最近中文字幕免费版在线3 最近中文字幕无吗高清视频 | 视频一区二区国产 | 国产偷国产偷亚洲高清在线 | 国产精品久久久久久久久 | 国产色婷婷精品综合在线手机播放 | 中国女人内谢59xxxxx | 狠久久| 四虎影视久久久 | 色综合色狠狠天天综合色hd | 一区二区三区日韩精品 | 免费看国产精品麻豆 | 国产精品福利在线观看免费不卡 | 四虎在线观看免费视频 | 久久99精品国产麻豆婷婷 | 亚洲精品二三区伊人久久 | 午夜精品久久久久久久99热浪潮 | 狠狠狠色 | 久久激情五月 | 涩涩视频免费看 | 九九影院理论片 | 久久99亚洲精品久久久久网站 | 国产真实强j视频在线观看 国产真实偷乱视频在线观看 | 欧美亚洲一区二区三区四 | 亚洲天堂777| 精品成人久久 | 日日日影院 | 97精品国产综合久久久久久欧美 | 欧美日韩操 | 天天干夜夜添 | 亚洲国产一区二区三区四区 |