Sean's Note: "Java SE7 技術手冊" 讀後筆記

2013年8月14日 星期三

"Java SE7 技術手冊" 讀後筆記

CH3 基礎與法

  1. 如果運算式中包括不同型態數值,則運算時以長度最長的型態為主,其他數值自動提昇 (Promote) 型態。
  2. 如果運算元都是不大於 int 的整數,則自動提升為 int 型態進行運算。
    所以下方的例子將編譯失敗 (Type mismatch: cannot convert from int to short) :
    short a = 2;
    short b = 3;
    short c = a + b; // Sol: short c = (short)a + b;
    

CH4 認識物件

  1. Integer 實際上是使用 Integer.valueof() 來建立 Integer 實例,所以看看 Integer.java (可在 JDK 資料夾 src.zip 中的 java/lang
    底下找到) ,會發現其在 -128 ~ 127 間有 cache 的機制。
    public static Integer valueOf(int i) {
        assert IntegerCache.high >= 127;
        if (i >= IntegerCache.low && i <= IntegerCache.high)
            return IntegerCache.cache[i + (-IntegerCache.low)];
            return new Integer(i);
    }
  2. 使用 + 串接字串會產生新的 String 實例,所以不要將 + 用在重複性的串接場合,可用 StringBuilder (Note: 適用於 single thread,multithread 則用 StringBuffer) 來改善效能。

CH5 物件封裝

  1. 如果沒有宣告權限修飾的成員,只有在相同套件的類別中,才可以直接存取,也就是"套件範圍權限"。

CH7 介面與多型

  1. interface 的方法只能宣告為 public abstract (也可省略不寫),無須且不能有實作。
  2. Listener 常用 interface 來實作。

CH11 執行緒與並行 API

  1. 執行緒有可能在未經 notify()、interrupt() 或逾時情況下私自甦醒 (Spurious wakeup),
    所以 wait() 一定要在條件成立的迴圈中執行。

沒有留言:

張貼留言