——希望迎著陽光奔跑!

           

          Java程序的執(zhí)行順序

          有這樣的一段程序:
          class Person {
          ?int age = 0;

          ?public Person() {
          ??System.out.println("2、然后執(zhí)行了super");
          ?}

          ?public void fun() {
          ??System.out.println("super.age=" + age);
          ?}
          }

          public class Test4 extends Person {
          ?static {
          ??System.out.println("1、先執(zhí)行了static區(qū)域");
          ?}

          ?int age = 10;

          ?public Test4() {
          ??super.fun();
          ??System.out.println("3、然后執(zhí)行了this() age=" + age);
          ?}

          ?public Test4(int age) {
          ??this();
          ??System.out.println("4、然后執(zhí)行了this(int age) 年齡是:" + age);
          ?}

          ?public static void main(String[] args) {
          ??Test4 test = new Test4(20);
          ?}
          }
          運(yùn)行的結(jié)果如下:
          1、先執(zhí)行了static區(qū)域
          2、然后執(zhí)行了super
          super.age=0
          3、然后執(zhí)行了this() age=10
          4、然后執(zhí)行了this(int age) 年齡是:20
          ????? 有以上程序的運(yùn)行結(jié)果我們不難發(fā)現(xiàn)java程序的執(zhí)行步驟:對于static域的成員或static變量或static函數(shù)來說在JVM裝載類的時候就已經(jīng)為這些變量分配了實(shí)際的空間。在完成這些工作后,程序再去尋找函數(shù)main()的入口,執(zhí)行main()中的代碼塊。
          ???????在這里順便說一下棧空間和堆空間的區(qū)別:個人認(rèn)為程序運(yùn)行時它會申請一片空間,那么在程序中定義的變量在程序運(yùn)行時都會占用這片空間中的一塊,而堆空間是通過new關(guān)鍵字所產(chǎn)生的對象等所占用的空間。在該程序中,當(dāng)使用new Test4(20)時程序便會首先執(zhí)行該類中非靜態(tài)變量的默認(rèn)初始化,即在該程序中設(shè)a的初值為0;完成后然后看看構(gòu)造函數(shù)中有沒有傳遞形參過來,若有則先完成對其的賦值,即綁定構(gòu)造方法的參數(shù);然后檢查構(gòu)造函數(shù)中有沒有this()或super()等形式的代碼,若有則優(yōu)先執(zhí)行,于是在該程序中執(zhí)行代碼this();再跳轉(zhuǎn)到另一個構(gòu)造函數(shù),這個構(gòu)造函數(shù)執(zhí)行與第一個構(gòu)造函數(shù)一樣的過程,于是先自動調(diào)用父類的構(gòu)造函數(shù)執(zhí)行其中的代碼,然后再去對在類中定義的變量完成顯示的初始化。一切工作完成后便會接著執(zhí)行構(gòu)造后數(shù)中那些真正屬于它的代碼段。

          posted on 2006-09-12 15:17 Ark 閱讀(1295) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(2)

          隨筆檔案

          Java 志士

          Tecnology collection

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 泰州市| 攀枝花市| 正宁县| 石嘴山市| 农安县| 延吉市| 东乌| 岳池县| 中牟县| 昌乐县| 宁晋县| 新津县| 武鸣县| 五原县| 永仁县| 明水县| 舟曲县| 黄梅县| 拉孜县| 鄂托克旗| 丽江市| 安国市| 衢州市| 宝丰县| 宝兴县| 车致| 新乐市| 涟水县| 仙居县| 宝丰县| 襄城县| 京山县| 武宁县| 永寿县| 乐山市| 老河口市| 大余县| 灯塔市| 泾川县| 屏山县| 绍兴县|