——希望迎著陽光奔跑!

           

          Java程序的執行順序

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

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

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

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

          ?int age = 10;

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

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

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

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


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


          網站導航:
           

          導航

          統計

          常用鏈接

          留言簿(2)

          隨筆檔案

          Java 志士

          Tecnology collection

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 南城县| 隆化县| 大荔县| 青冈县| 斗六市| 边坝县| 襄垣县| 邹平县| 清涧县| 泾川县| 清原| 伊宁市| 普洱| 麻江县| 射洪县| 长乐市| 登封市| 鄂托克前旗| 嘉黎县| 屏东县| 宣城市| 竹山县| 营口市| 沙田区| 兴业县| 津南区| 东阿县| 吉木乃县| 阳山县| 阿克苏市| 信宜市| 曲靖市| 汪清县| 济阳县| 鄄城县| 谷城县| 南溪县| 金堂县| 桐柏县| 邓州市| 南昌县|