——希望迎著陽光奔跑!

           

          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

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 岳普湖县| 青海省| 蒙山县| 固阳县| 武川县| 友谊县| 兴文县| 津南区| 白城市| 东源县| 贵港市| 东乌珠穆沁旗| 新乡县| 罗田县| 仪征市| 海林市| 四子王旗| 交城县| 南开区| 饶平县| 射洪县| 南安市| 朝阳区| 云梦县| 南开区| 孝感市| 突泉县| 犍为县| 科技| 习水县| 濮阳县| 弥渡县| 津南区| 铜陵市| 仲巴县| 静宁县| 马鞍山市| 利辛县| 虞城县| 祁门县| 芜湖市|