1
inputstream/outputstream->filterstream+nodestream->
reader/writer->inputstreamreader+outputstreamwriter(用於char<-->byte雙向轉換)
buffered預設8k
編碼 Unicode-> utf-8
解碼 Unicode<-utf-8
2
pipestream 類似於socket的阻塞式線程間管道通訊
序列化時只會儲存所有非靜態成員,靜態和方法不儲存,如果有對象成員,則對象成員也需要繼承標誌介面才行。序列化對象內部實現的read和write是特殊的private方法。
3
java中的io類的stream對象分為兩種類型,一種是節點類型,提供資料來源,一種是過濾類型,提供功能和能力。
4
方法中的內部類存取方法中的局部變數或者方法聲明傳進來的參數時,變數和參數必須為final的,至於原因很有意思,在別的情況下有木有這種情況呢?目前想不起來了啊 >_<
另外內部類的對象必須要用外部類的對象產生,要不然沒有外面,哪來裡面。
形式:
ExternalClass external=new ExternalClass();
ExternalClass.Inner inner=external.new External.Inner();
5
無意中看了下join的源碼,原來也是在java層實現的啊。
6
顯式寫下的字串對象如"i\'m hungry" 是儲存與全域字串池裡面的,只要是這幾個字兒的顯示字串產生的對象(比如直接賦值給String),那就是同一個引用。當然,如果你先new一個String對象,那自然是不同的。
7
一個子類繼承父類,子類構造的時候必須要調用父類的構造先(第一行),至於為神馬,這很簡單,首先在邏輯上,沒有老子哪來兒子,另外既然是繼承肯定都要有,你不能老子初始化了兒子忘了,或者兒子還沒寫代碼的時候初始化的不一樣。
預設如果父類木有構造,運行時會給他個預設的,子類也就不需要顯示調用。如果有個無參的構造,子類也不需要顯示調用。如果是只有有參的構造,或者你想選擇構造,就必須在子類構造的第一行顯示調用了,super(oo,xx);
8
Integer類好像比較陰險啊。。。帶緩衝的麼。。。?0-255?