qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請訪問 http://qaseven.github.io/

          Java變量初始化的時機

            對于JAVA中變量的初始化是一個很基礎(chǔ)的問題,其中的一些問題也是易被學(xué)習(xí)者所忽略。當(dāng)在編寫代碼的時候碰到時,常被這些問題引發(fā)的錯誤,感覺莫名其妙。而且現(xiàn)在許多大公司的面試題,對于這方面的考查也是屢試不爽。以下是對java變量初始化的時機的分析。
            【java變量執(zhí)行初始化的步驟】
            java是一門強類型語言,因此java語言規(guī)定每個變量必須先聲明,然后才能使用,聲明變量時必須指定該變量的數(shù)據(jù)類型。首先看下面這條語句的執(zhí)行過程:
            int a = 5;
            實際上面這條語句會被拆分成兩個過程執(zhí)行:
            (1)int a ;//創(chuàng)建java對象時根據(jù)該語句為變量分配內(nèi)存空間;
            (2)a = 5;//賦值操作會最終被提取到構(gòu)造器中執(zhí)行初始化操作。
            實際上在java中,在使用new操作符創(chuàng)建一個類的實例對象的時候,開始分配空間并將成員變量初始化為默認(rèn)的數(shù)值,在這里并不是指將變量初始化為在變量定義處的初始值,對于基本類型變量,默認(rèn)值空值是0或false,對于引用類型變量,默認(rèn)空值為null。這一切都是在構(gòu)造函數(shù)執(zhí)行之前,變量的真正初始化是在構(gòu)造函數(shù)中執(zhí)行。
            【java中變量初始化的時機】
            1、程序可以在3個地方對實例變量進行初始化:
            (1)定義實例變量的時候指定初始值;
            (2)非靜態(tài)初始化代碼塊中對實例變量指定初值;
            (3)構(gòu)造器中對實例變量指定初值。
            雖然程序在3個地方都可對實例變量指定初始值,但(1)、(2)處的賦值操作最終會被提取到構(gòu)造器中執(zhí)行。且(1)、(2)的執(zhí)行順序與他們在源程序中出現(xiàn)的順序相同。可以通過JDK的javap工具來看程序的執(zhí)行過程:
            2、java中類變量初始化的時機:
            (1)定義類變量的時候指定初始值;
            (2)靜態(tài)初始化代碼塊中對類變量指定初值。
            這里類變量初始化的時機為兩處,而沒有在構(gòu)造器中這一說。這也很容易理解,因為類變量是類加載的時候執(zhí)行的初始化,且只執(zhí)行一次,而調(diào)用構(gòu)造器是對象實例化執(zhí)行的,每實例化一次對象,執(zhí)行一次。

          posted on 2014-08-12 09:34 順其自然EVO 閱讀(203) 評論(0)  編輯  收藏 所屬分類: 測試學(xué)習(xí)專欄

          <2014年8月>
          272829303112
          3456789
          10111213141516
          17181920212223
          24252627282930
          31123456

          導(dǎo)航

          統(tǒng)計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 长寿区| 长海县| 永川市| 鄂托克旗| 广宗县| 香格里拉县| 忻城县| 北京市| 武陟县| 封开县| 临夏市| 奎屯市| 毕节市| 蓬安县| 阆中市| 南岸区| 郧西县| 西华县| 铁岭市| 赤城县| 景泰县| 阿拉尔市| 泾川县| 巫溪县| 怀宁县| 台东市| 宁乡县| 武安市| 三门峡市| 新宾| 运城市| 武宣县| 宣威市| 论坛| 湖州市| 荥阳市| 西林县| 罗甸县| 西安市| 黄大仙区| 东山县|