CH3 基礎與法
- 如果運算式中包括不同型態數值,則運算時以長度最長的型態為主,其他數值自動提昇 (Promote) 型態。
- 如果運算元都是不大於 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 認識物件
-
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); }
- 使用 + 串接字串會產生新的 String 實例,所以不要將 + 用在重複性的串接場合,可用 StringBuilder (Note: 適用於 single thread,multithread 則用 StringBuffer) 來改善效能。
CH5 物件封裝
- 如果沒有宣告權限修飾的成員,只有在相同套件的類別中,才可以直接存取,也就是"套件範圍權限"。
CH7 介面與多型
- interface 的方法只能宣告為 public abstract (也可省略不寫),無須且不能有實作。
- Listener 常用 interface 來實作。
CH11 執行緒與並行 API
- 執行緒有可能在未經 notify()、interrupt() 或逾時情況下私自甦醒 (Spurious wakeup),
所以 wait() 一定要在條件成立的迴圈中執行。
沒有留言:
張貼留言