看過了一本Java入門的教材后再來看Thinking in Java感覺真好
          初始化與清理
          1. 涉及進本類型的重載
          如果某個方法f1有參數為char, byte, short, int, long, float, double的重載方法(注意類型是從小到大排列的),調用時自左往右套用。如f1(5)調用了f1(int),f1((long)5)調用了f1(long)
          2. 一個對象,如果沒有寫任何構造方法,編譯器會自動創建一個無參構造器。但是如果已經定義了一個構造器(無論是否含參),編譯器不會自動創建缺省的無參構造器。
          3. Banana a = new Banana();
          a.f(1);
          編譯器執行a.f(1)時其實相當于執行了Banana.f(a,1);
          把a的引用傳遞給了f,當然并不能這樣書寫代碼,在f中要訪問a就使用this關鍵字。
          4. 同一個類中,方法f2調用方法f2時可以寫this.f2(),但為了更直觀和易讀,通常寫成f2()
          5. static關鍵字,有人認為它具有全局函數的語義,并不是“面向對象”的。如果代碼中出現了大量的static方法,就的確該重新考慮自己的設計了。
          6. finalize()并不是析構函數。
          三點重要概念:
          1)對象可能不被垃圾回收。
          2)垃圾回收并不等于“析構”
          3)垃圾回收只與內存有關。
          無論對象是如何創建的,垃圾回收器都會負責釋放對象占據的所有內存。因此之所以要有finalize(),是由于在分配內存時可能采用了類此C語言中的做法,即native方法。
          由此可見,垃圾回收器并不能完全代替析構函數,而且絕對不能直接調用finalize()。
          finalize()的另一價值在于發現清理對象時一些隱晦的錯誤。如
          class Book {
          boolean checkedOut = false;
          Book(boolean checkOut) {
          checkedOut = checkOut;
          }
          void checkIn() {
          checkedOut = false;
          }
          public void finalize() {
          if (checkedOut)
          System.out.println("Error: checked out");
          }
          }
          在Book對象終結時檢查是否已被簽入,如果發生未被簽入的錯誤,則在回收時報錯。
          System.gc()用于強制進行終結動作,在寫程序時可以加速調試過程。
          7. 垃圾回收器的工作方式
          1)引用計數
          2)自適應

          posts - 403, comments - 310, trackbacks - 0, articles - 7
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          2.14 Java notes - Thinking in Java - 初始化與清理

          Posted on 2007-04-22 20:23 ZelluX 閱讀(108) 評論(0)  編輯  收藏 所屬分類: OOP
          2007-02-14 12:24:54
          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 镇远县| 侯马市| 定远县| 和顺县| 贡山| 邓州市| 泰安市| 泊头市| 五河县| 双桥区| 仁怀市| 鹿泉市| 阜新市| 高安市| 平舆县| 临洮县| 深水埗区| 曲阜市| 郧西县| 宁德市| 涟源市| 万安县| 安福县| 泽州县| 北川| 绵竹市| 泰宁县| 卓资县| 宣威市| 长兴县| 武邑县| 嘉禾县| 双城市| 泌阳县| 香港 | 尚志市| 子洲县| 绥滨县| 洪湖市| 涞水县| 九江县|