20155202 2016-2017-2 《Java程序設計》第6周學習總結
教材學習內容總結
輸入輸出
- 數據從來源取出:輸入串流
java.io.InputStream
- 寫入目的的:輸出串流
java.io.OutputStream
- 不使用
inputstream和outputstream
時候要使用close()關閉串流。 - FileInputStream指定文件名創建實例,用,讀取數據,
FileOutputStream
寫出數據,二者不要時用close()關閉文檔
- 用
ByteArrayInputStream
指定byte數組創建實例,將byte數組當數據源進行讀取,ByteArrayOutputStream
將byte數組當目的地寫出數據 - 打包器為輸入輸出數據加工處理:分類有
具備緩沖區作用的 BufferedInputStream,BufferedOutputStream
.數據轉換
處理作用的 DataInputStream和DataOutputStream . 和對象串行化
能力的ObjectInputStream.ObjectOutputStream - 處理
字符輸入輸出
的父類是Reader和Writer兩個,FileReader,FileWriter對文檔讀取和寫入。
線程與並行API
- 讓目前流程暫停指定時間,用java.long.thread的靜態sleep()方法。
- main外獨立設計流程,寫java.long.Runnable接口,從main開始主線程執行,創建Thread實例執行run方法,啟動指定流程,調用Thread實例的start()方法。
好處:有彈性
- 撰寫多線程程序的方式是:繼承Thread類。調用Thread實例的start方法后3個基本狀態:可執行,被阻斷,執行中。
- 線程中
有優先權
,srtPriority()方法設定優先權,數字越大優先權越高。優先權相同,則輸流執行。 - 一個
進入Blocked
的線程,可由另一個線程調用該線程的interrupt方法離開blocked狀態。 - 進入Dead的方法的線程不可以再次調用start()方法。
- 標示為
Deprecated的API標示出問題的方法,不建議再用
- 線程的暫停,重啟,停止都要視需求而做。
- 每個線程都屬於某個線程群組,線程一旦歸入某個群組,無法更換群組
- 方法上標
synchronize提供可重入同步
,執行方法必須取得該實例的鎖定。執行synchronize范圍代碼期間。若調用鎖定對象的wait()方法,線程會釋放對象鎖定。 - 調用notify()時候,從對象等待集合中隨機通知一個線程加排班,notifyAll(),所有等待集合都會被通知參與排班,這些線程會與其他線程共同競爭對象鎖定。
教材學習中的問題和解決過程
- 問題1:操作什么接口可以建立執行流程?
- 問題1解決方案:java.lang.Runnable接口。
- 問題2:撰寫多線程程序的方式有哪些?
- 問題2解決方案:操作Runnable接口,或者繼承Thread類。
- 問題3:進程中線程之間的關系?
解決問題
線程不像進程,一個進程中的線程之間是沒有父子之分的,都是平級關系。即線程都是一樣的, 退出了一個不會影響另外一個。
但是所謂的"主線程"main,其入口代碼是類似這樣的方式調用main的:exit(main(...))。
main執行完之后, 會調用exit()。
exit() 會讓整個進程over終止,那所有線程自然都會退出。
代碼調試中的問題和解決過程
-
問題1:
-
解決方案:之前的東西沒有寫,類沒有調用,導致系統無法識別變量。
代碼托管
(statistics.sh腳本的運行結果截圖)
上周考試錯題總結
- 填空:使用JDB進行調試時單步執行命令有step和next,我們優先使用(next)。
- 填空:使用JDB進行調試時查看源代碼的命令是(list)。
- 填空 :10&9 的結果是(8)
- 填空:”Hello”.charAt(1) 的值是(‘e’)
- 填空:System.out.println( “HELLO”.( toLowerCase() ) ) 會輸出“hello”..
- 填空:”Hello”.substring( 0,2 )的值是“He”
- CH06填空:Java中繼承要使用(extends)關鍵字
- CH06填空:父類和子類要有(ISA 或“是一種”)關系
- CH06判斷:可以用父類聲明對象引用,用子類生成對象,但需要強制類型轉換。(X)
- CH06填空:寫出編譯P165 RPG.java的命令(javac –d . *.java)
- CH06填空:Java中通過(繼承)和接口實現多態。
- CH06判斷:父類中有個public void fight(),子類中有個public void fight( Weapon w),這兩個方法的關系是Override.(X)
- CH06填空:標注(@Override)可以從語法上保證方法的Override.
- CH06 判斷:抽象類的子類可以是抽象類也可以不是。(OK)
- CH06 判斷:被聲明為protected的方法,只能中繼承后的子類中訪問。(X)
- CH06 判斷:父類的protected方法,在子類中可以override為public的方法。(OK)
- CH06 判斷:Math中的abs()方法可以Override.(X)
- CH06填空:在構造方法中調用本類的構造方法,要使用(this)關鍵字
- CH06填空:在構造方法中調用父類的構造方法,要使用(super)關鍵字
- CH06 判斷:final可以用在類,方法,變量前。(OK)
- CH06 判斷:XX是一個引用型變量,System.out.println(XX)等價於System.out.println(XX.toString()). (OK)
- CH06 判斷:Java中所有的對象都有equals()方法。(OK)
- CH06填空:實現一個類中的equals()方法時,一定要同時實現(hashCode())方法
- CH07 填空:實現接口表示(擁有行為),但不是ISA關系。
- CH07 填空:Java中類可以實現兩個以上的(接口),也就是擁有多種行為。
- CH07 判斷:接口中 int STOP等價於public static final int STOP. (ok)
- CH07 判斷:Java中一個類可以繼承多個類。(X)
- CH07 判斷:Java中一個接口可以繼承多個接口。(OK)
- CH07 填空:用enum定義一個Season的類型表示四季(public enum Season{SPRING, SUMMER, AUTUMN,WINTER})。
- CH07 填空:面向對象中,設計經驗可以用(設計模式)表達
結對及互評
-
博客比較用功,個別細節還是要注意。
基於評分標准,我給本博客打分:7。得分情況如下:
1.教材學習中的問題和解決過程, 一個問題加1分
2.代碼調試中的問題和解決過程, 一個問題加1分
3.進度條中記錄學習時間與改進情況的加1分
4.有動手寫新代碼的加1分
博客鏈接
評分標准
-
正確使用Markdown語法(加1分):
- 不使用Markdown不加分
- 有語法錯誤的不加分(鏈接打不開,表格不對,列表不正確...)
- 排版混亂的不加分
-
模板中的要素齊全(加1分)
- 缺少“教材學習中的問題和解決過程”的不加分
- 缺少“代碼調試中的問題和解決過程”的不加分
- 代碼托管不能打開的不加分
- 缺少“結對及互評”的不能打開的不加分
- 缺少“上周考試錯題總結”的不能加分
- 缺少“進度條”的不能加分
- 缺少“參考資料”的不能加分
-
教材學習中的問題和解決過程, 一個問題加1分
-
代碼調試中的問題和解決過程, 一個問題加1分
-
本周有效代碼超過300分行的(加2分)
- 一周提交次數少於20次的不加分
-
其他加分:
- 周五前發博客的加1分
- 感想,體會不假大空的加1分
- 排版精美的加一分
- 進度條中記錄學習時間與改進情況的加1分
- 有動手寫新代碼的加1分
- 課后選擇題有驗證的加1分
- 代碼Commit Message規范的加1分
- 錯題學習深入的加1分
- 點評認真,能指出博客和代碼中的問題的加1分
- 結對學習情況真實可信的加1分
-
扣分:
- 有抄襲的扣至0分
- 代碼作弊的扣至0分
- 遲交作業的扣至0分
點評模板:
-
博客中值得學習的或問題:
- xxx
- xxx
- ...
-
代碼中值得學習的或問題:
- xxx
- xxx
- ...
-
基於評分標准,我給本博客打分:XX分。得分情況如下:xxx
點評過的同學博客和代碼
其他(感悟、思考等,可選)
課上時間老師講課很重要
學習進度條
代碼行數(新增/累積) | 博客量(新增/累積) | 學習時間(新增/累積) | 重要成長 | |
---|---|---|---|---|
目標 | 5000行 | 30篇 | 400小時 | |
第一周 | 200/200 | 2/2 | 20/20 | |
第二周 | 300/500 | 4/4 | 18/38 | |
第五周 | 1300/1000 | 9/7 | 22/60 | |
第六周 | 1800/1800 | 11/11 | 20/90 |
嘗試一下記錄「計划學習時間」和「實際學習時間」,到期末看看能不能改進自己的計划能力。這個工作學習中很重要,也很有用。
耗時估計的公式
:Y=X+X/N ,Y=X-X/N,訓練次數多了,X、Y就接近了。
-
計划學習時間:10小時
-
實際學習時間:12小時
-
改進情況:
(有空多看看現代軟件工程 課件
軟件工程師能力自我評價表)