日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

构造代码块会想你所想

發布時間:2025/3/8 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 构造代码块会想你所想 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

上一個建議中我們提議使用構造代碼塊來簡化代碼,并且也了解到編譯器會自動把構造代碼塊插入到各個構造函數中,那我們接下來看看編譯器是不是足夠聰明,能夠為我們解決真實的開發問題。有這樣一個案例:統計一個類的實例數量。可能你要說了,這很簡單,在每個構造函數中加入一個對象計數器不就解決問題了嗎?或者使用我們上一個建議介紹的,使用構造代碼塊也可以。確實如此,我們來看如下代碼是否可行:

1 public class Client { 2 public static void main(String[] args) { 3 new Base(); 4 new Base(""); 5 new Base(0); 6 System.out.println("實例對象數量:" + Base.getNumOfObjects()); 7 } 8 } 9 10 class Base { 11 // 對象計數器 12 private static int numOfObjects = 0; 13 14 { 15 // 構造代碼塊,計算產生對象數量 16 numOfObjects++; 17 } 18 19 public Base() { 20 } 21 22 // 有參構造調用無參構造 23 public Base(String _str) { 24 this(); 25 } 26 27 // 有參構造不調用其他構造 28 public Base(int _i) { 29 } 30 31 // 返回在一個JVM中,創建了多少個實例對象 32 public static int getNumOfObjects() { 33 return numOfObjects; 34 } 35 }

這段代碼是可行的嗎?能計算出實例對象的數量嗎?哎,好像不對呀,如果編譯器把構造代碼塊插入到各個構造函數中,那帶有String形參的構造函數可就有問題,它會調用無參構造,那通過它生成Base對象時就會執行兩次構造代碼塊:一次是由無參構造函數調用構造代碼塊,一次是執行自身的構造代碼塊,這樣的話計算可就不準確了,main函數實際在內存中產生了3個對象,但結果卻會是4。不過真是這樣的嗎?Are you sure?我們運行一下看看結果:

實例對象數量:3

非常遺憾,你錯了,實例對象的數量還是3,程序沒有任何問題。奇怪嗎?不奇怪,上一個建議是說編譯器會把構造代碼塊插入到每一個構造函數中,但是有一個例外的情況沒有說明:如果遇到this關鍵字(也就是構造函數調用自身其他的構造函數時)則不插入構造代碼塊,對于我們的例子來說,編譯器在編譯時發現String形參的構造函數調用了無參構造,于是放棄插入構造代碼塊,所以只執行了一次構造代碼塊—結果就是如此。

那Java編譯器為什么會這么聰明呢?這還要從構造代碼塊的誕生說起,構造代碼塊是為了提取構造函數的共同量,減少各個構造函數的代碼而產生的,因此,Java就很聰明地認為把代碼塊插入到沒有this方法的構造函數中即可,而調用其他構造函數的則不插入,確保每個構造函數只執行一次構造代碼塊。

還有一點需要說明,讀者千萬不要以為this是特殊情況,那super也會類似處理了。其實不會,在構造代碼塊的處理上,super方法沒有任何特殊的地方,編譯器只是把構造代碼塊插入到super方法之后執行而已,僅此不同。

注意 放心地使用構造代碼塊吧,Java已經想你所想了。

?


本文轉自SummerChill博客園博客,原文鏈接:http://www.cnblogs.com/DreamDrive/p/5422705.html,如需轉載請自行聯系原作者

總結

以上是生活随笔為你收集整理的构造代码块会想你所想的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲一区播放 | 亚洲综合干 | 91精品久久久久久久 | 性a视频 | 99re6在线观看 | 国产精品99久久 | 美女毛片在线观看 | 国产十区 | 女女爱爱视频 | 天天操天天干天天操 | 人人射| 国产丝袜视频 | 国产精品视频免费 | 欧美第一精品 | 黑人精品一区二区 | 91 色| 在线视频 91 | 国产精品久久久久9999爆乳 | 女尊高h男高潮呻吟 | 蜜臀av一区二区三区有限公司 | 成人国产精品久久久 | 国产精品成人国产乱 | 国产精品国产精品国产专区 | 一区二区三区视频在线 | 午夜影院网站 | 制服av在线 | 中文字幕视频在线 | 少妇在线播放 | 欧美 在线 | 欧美一区二区三区黄色 | 又黄又爽的网站 | 国产午夜精品免费一区二区三区视频 | 亚洲色图第1页 | 爱草av| 国产高清sp | 一卡二卡在线视频 | 三级黄色生活片 | 国产视频综合 | 99免费在线观看视频 | www黄色大片 | 天堂av片 | 国产精品美女在线观看 | 国产日韩欧美一区二区东京热 | 久久综合色视频 | 蜜桃视频一区二区三区 | www国产精品 | 欧美一级黄视频 | 色播av | 亚洲午夜在线观看 | 二区国产 | 日韩av电影一区 | 免费av看 | 91精品亚洲一区 | 亚洲24p| 久久久精品人妻一区二区三区色秀 | 91免费在线视频 | 国产免费二区 | 天天综合永久入口 | 国产精品久久久久电影 | 米奇久久 | 日本少妇裸体做爰高潮片 | 午夜影院福利社 | 91在线视频网址 | 久久久少妇 | 日本一区二区视频在线 | av成人精品 | 国产微拍一区 | 在线精品自拍 | 国产成人午夜视频 | 免费91看片| 激情午夜天 | 国产精品污污 | 女婴高潮h啪啪 | 中文字幕在线精品 | 黄色91视频| 午夜丰满寂寞少妇精品 | 91av久久| 欧美日韩国产亚洲沙发 | 久久久夜色精品亚洲 | 中文av在线播放 | 我们俩电影网mp4动漫官网 | 国产wwwxxx| 欧美老熟妇一区二区 | 清冷学长被爆c躁到高潮失禁 | 久久9热| 日本久久久久久久久 | 亚洲精品国产精品乱码不66 | 99免费在线观看视频 | 精品欧美一区二区三区久久久 | 日韩成人高清视频 | 在线观看av中文字幕 | 欧美日韩成人免费观看 | 中文字幕亚洲一区二区三区五十路 | 少妇搡bbbb搡bbb搡小说 | 精品少妇v888av | 性一交一乱一伧老太 | 天天亚洲| 日韩午夜小视频 | 久久久九九九九 |