看過了一本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 閱讀(107) 評論(0)  編輯  收藏 所屬分類: OOP
          2007-02-14 12:24:54
          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 安溪县| 井研县| 沙湾县| 甘肃省| 防城港市| 启东市| 大厂| 策勒县| 延吉市| 灵丘县| 长治县| 石屏县| 台南市| 周至县| 获嘉县| 长春市| 吴旗县| 依兰县| 澄城县| 射阳县| 高陵县| 昌平区| 垦利县| 五台县| 利川市| 衡南县| 察哈| 武清区| 嫩江县| 固始县| 自治县| 清水县| 武山县| 宝坻区| 阿合奇县| 临夏县| 治县。| 奉贤区| 彭阳县| 玉树县| 沂水县|