標籤:
20145331 《Java程式設計》第6周學習總結教材學習內容總結第十章 輸入/輸出10.1.1串流
•Java將輸入/輸出抽象化為串流,資料有來源及目的地,銜接兩者的是串流對象。
•若要將資料從來源取出,可以使用輸入串流;如果要將資料寫入目的地,可以使用輸出串流。輸入串流代表對象為java.in.InputStream執行個體,輸出串流代表對象為java.io.Outputstream執行個體
•每次從Inputstream讀入的資料,都會先置入byte資料,它的read()方法會嘗試讀入btye的資料,並返回讀入的位元組。
•在不使用InputStream與OutputStream時,必須使用close()方法關閉串流。由於InputStream與OutputStrem操作了java.io.Closeable介面,其父介面為java.lang.AutoCloseable介面,因此可使用JDK7嘗試自動關閉資源文法。
10.1.2串流繼承架構
•System的setIn方法指定標準輸入來源,setOut指定輸出目的地,標準輸出可以導向至文檔,只要在執行程式時使用>將輸出導向至指定文檔就行
•FileInputStream是InputStream的子類,主要操作InputStream的read()抽象方法;FIleOutputStream是OutputStream的子類,主要操作其write()的操作方法。
10.1.3串流處理裝飾器
•裝飾器只是對資料進行了一些加工處理,例如緩衝、序列化、資料裝換等
•BufferedInputStream與BufferedOutputStream主要在內部提供緩衝區功能。
10.2字元處理類
•Reader抽象類別:用於讀取字元流的抽象類別。子類必須實現的方法只有 read(char[], int, int) 和 close()。但是,多數子類將重寫此處定義的一些方法,以提供更高的效率或其他功能。
•Writer抽象類別:寫入字元流的抽象類別。子類必須實現的方法僅有 write(char[], int, int)、flush() 和 close()。但是,多數子類將重寫此處定義的一些方法,以提供更高的效率或其他功能。
•FileReader、FileWriter可以對文檔作讀取或寫入。
第十一章 線程與並行API11.1線程
•單線程程式:啟動的程式從main()程式進入點開始至結束只有一個流程。
•多線程程式:一個程式擁有多個流程。
•撰寫多線程程式的方式:操作Runnable介面,在run()中定義額外流程;繼承Thread類,在run()中定義額外流程
•操作Runnable介面的好處就是較有彈性,類還有機會繼承其他類;若繼承了Thread類,那該類就是一種Thread,通常是為了直接利用Thread中定義的一些方法,才會繼承Thread來操作。
•基本狀態圖:start——>runnable——>(blocked)——>running——>dead
•如果要停止線程,最好自行操作,讓程式走完應有流程,而不是調用syop()方法
•線程存取同一對象相同資源時可能會引發競速情況(Race Condition)
•wait()、notify()、notifyAll() 是 Object 定義的方法,可以通過這三個方法控制線程釋放對象的鎖定,或者通知線程參與鎖定競爭
11.2並行API
•在使用進階並行API時,Lock介面的操作對象可實現synchronized的功能。
•在使用進階並行API時,Condition介面的操作對象可實現Object的wait()、notify()、notifyAll()功能。
代碼調試中的問題和解決過程
Inputstream類中的常用方法:
public abstract int read( ) public int read(byte b[ ]) public int read(byte b[ ], int off, int len) public int available( ) public long skip(long n) public int close( )
OutputStream類中的常用方法:
public void write(byte b[ ]) public void write(byte b[ ], int off, int len) public abstract void write(int b) public void flush( ) public void close( )
本周代碼託管其他(感悟、思考等,可選)
知識越來越多,難度也越來越大了,感覺前面的內容我忘記了好多,今後在學習的過程中,要注意複習前面的內容,做到溫故而知新。
剛開始學習的時候學習的重點都放在文法和技巧上,不太注意API的學習,這讓我在這兩周的學習中吃到了苦頭,API是JAVA的重要部分,在今後的學習中不可再抱有僥倖心理,踏踏實實地去學習每一個知識點,才會有質的提高。
學習進度條
| |
程式碼數(新增/累積) |
部落格量(新增/累積) |
學習時間(新增/累積) |
重要成長 |
| 目標 |
3500行 |
20篇 |
300小時 |
|
| 第一周 |
150/150 |
1/1 |
14/14 |
|
| 第二周 |
150/300 |
1/2 |
14/28 |
|
| 第三周 |
100/400 |
1/3 |
14/42 |
|
| 第四周 |
200/600 |
1/4 |
14/56 |
|
| 第五周 |
317/917 |
1/5 |
14/70 |
|
| 第六周 |
355/1272 |
2/7 |
16/86 |
參考資料
- Java學習筆記(第8版)
- 《Java學習筆記(第8版)》學習指導
20145331 《Java程式設計》第6周學習總結