標籤:
條件陳述式
&和|可以用作條件陳述式,但是是長串連,左右兩邊的運算式必須都執行完!這和&&和||不同,&&和||是短串連,只要左邊的運算式已經能夠計算出整個運算式的結果,右邊的運算式就不會執行!
繼承、重載、多態
重載和多態不是一個概念:
-
重載:類內的、橫向的關係;兩個方法名稱相同,但參數不同,傳回型別可以不同(但不能只改變傳回型別),存取許可權可以不同(因為重載的兩個方法之間沒有更多的關係,與繼承和多態無關)。
-
多態:類間(父類和子類)的、縱向的關係;繼承自父類的方法並覆蓋重寫,方法名稱相同,參數相同,傳回型別相同或為該傳回型別的子類(且子類保證能執行父類的一切行為),存取許可權相同或更為開放。
-
關於傳回型別和存取許可權的不相同情況,可以從子類的聲明不能影響父類中聲明的使用方式這一角度來看,因為多態的目的就是使用父類作為引用而不關心子類的實現,,所以子類的聲明不能使得父類中的聲明所體現的使用方式無法使用。因而,傳回型別子類不能超出父類的聲明,而存取許可權子類不能限制父類的聲明。
調用method:
為什麼會允許建立Object對象?
super、this
輸出格式化
普通格式化
格式化說明:
格式化例子:%1$,06.1f
日期格式化(String.format(...))
格式化中“<”表示重複利用之前用過的參數
日期類
java.util.Calendar:set(...)中的月份是零基的,所以0表示一月份,並且set是有延遲的。
異常
try/catch是用來處理真正的異常,是程式員無法預測或防止的執行期失敗狀況,而不是程式的邏輯錯誤,而runtimeexception大部分都是程式的邏輯問題,屬於非檢查異常(unchecked,編譯器不檢查)。
輸入輸出串流(InputStream/OutputStream)
設計原則:
-
物件導向設計:每個類只要做好一件事情就行了。
-
所以java的輸入/輸出API帶有連線類型的串流,代表來源與目的地之間的連結,串連串流將串流與其他串流串連起來。
-
一般來說,串流要兩兩串連才有意義——其中一個表示串連(輸入的來源或輸出的目的地),另一個表示要被呼叫者法(高層API,讀取出真正的高層次資料類型或輸出真正的高層次資料)。
-
比如FileOutputStream用於想檔案寫入位元組,但我們通常並不直接寫位元組,而是以對象層次的觀點來寫入,所以需要高層次的串連串流處理高層次的對象資料到位元組流的串連。
-
於是這樣就可以通過不同的組合來達到最大的適應性,而不必在一種串流類中考慮所有可能的情況(這是不可能的)。
序列化
-
標記介面:
-
過濾:
-
指向不變性:
-
父類與子類:
-
static:
-
序列化版本serialVersionUID:
泛型
class ChildClass extends SuperClass { ...}public void f(List<? extends SuperClass> list) { list.get(0); // ok list.add(new ChildClass()); // wrong}這樣倒是可以:public <T extends SuperClass> void f(List<T> list) { list.get(0); // ok list.add((T) new ChildClass());}
Head First Java