20155213 2016-2017-2 《Java程序設計》第五周學習總結
教材學習內容總結
-
Java中所有錯誤都會被打包為對象,運用try、catch,可以在錯誤發生時顯示友好的錯誤信息。
-
運用try、catch,還可以在捕捉處理錯誤之后,嘗試恢復程序正常執行流程。
-
如果父類異常對象在子類異常前被捕捉,則catch子類異常對象的區塊將永遠不會被執行。
-
如果想要讓異常堆棧七點為重拋異常的地方,可以使用fillInstackTrance()方法。
-
catch括號中列出的異常不得有繼承關系,否則會發生編譯錯誤。
-
在catch區塊進行完部分錯誤處理之后,可以使用throw(注意不是throws)將異常再拋出。
-
何時使用斷點?
斷言客戶端調用方法前,已經准備好某些前置條件(通常在private方法之中)
斷言客戶端調用方法后,具有方法承諾的結果。
斷言對象某個時間點下的狀態。
使用斷言取代批注。
斷言程序流程中絕對不會執行到的程序代碼部分。
-
FileUtil中通過Scanner搭配FileInputStream來讀取文檔,實際上Scanner對象有close方法,可以關閉Scanner相關資源與搭配的FileInputSream.斷言是判定程序中的某個執行點必然是或不是某個狀態,所以不能當作像if之類的判斷式來使用,assert不應當作程序執行流程的一部分。
若想最后一定要執行關閉資源的動作,try、catch語法可以搭配finally,無論try區塊中有無發生異常,若撰寫有finally區塊,則finally區塊一定會被執行。
-
fillaInStackTrace()方法會重新裝填異常堆棧,將起點設為重拋異常的地方,並返回Throwable對象
public class StackTraceDemo3 {
public static void main(String[] args) {
try{
c();
}catch(NullPointerException ex){
ex.printStackTrace();
}
}
}
教材學習中的問題和解決過程
- 問題1:若編程過程中出現了“unrepored exception IOException must be Caught or declare to be thrown···”
- 問題1解決方案:使用try、catch打包System.in.read(),聲明throws java.io.IOException。
- 問題2:在重寫父類方法時,有時不加 @Override編譯同樣通過了,但這樣會有什么影響嗎,還是說 @Override只是像個注釋一樣
- 問題2解決方案:@override是一個標注,是要求編譯程序檢查一下下面寫的方法是不是重新定義父類方法,如果不是編譯就會出錯。不寫標注直接重新定義父類方法是可以的
代碼調試中的問題和解決過程
-
問題1:如圖
-
問題1解決方案:在java里面沒有無符號數,到現在第五周了,編譯里本不該出現這樣低級的錯誤,但出現了,避免再犯還是提一下。
-
問題2:編譯時,終端顯示:注:xxx.java使用了未經檢查或不安全的操作。請問是怎么回事,應該如何解決
-
問題2解決方案:java中未經檢查或者不安全的操作並不是錯誤!!!完全可以忽視,不像看到這個的話,在class定義的前面一行加上 @SuppressWarnings("unchecked")
-
...
代碼托管
上周考試錯題總結
- 5.填空:System.out.println( “HELLO”.( toLowerCase() ) ) 會輸出“hello”..
- 6.填空:”Hello”.substring( 0,2 )的值是“He”
如果括號里面是整數的話,就會從前往后數相應個位置再繼續往后輸入。
結對及互評
-
與155227辜彥霖結對
-
個人感覺她的博客排版很好看,很值得借鑒,代碼量和提交次數都挺多,這種態度值得學習,但有點,所解決問題不夠個性化,還是犯着大多數人的錯誤。
-
評論
評分標准
-
正確使用Markdown語法(加1分):
- 不使用Markdown不加分
- 有語法錯誤的不加分(鏈接打不開,表格不對,列表不正確...)
- 排版混亂的不加分
-
模板中的要素齊全(加1分)
- 缺少“教材學習中的問題和解決過程”的不加分
- 缺少“代碼調試中的問題和解決過程”的不加分
- 代碼托管不能打開的不加分
- 缺少“結對及互評”的不能打開的不加分
- 缺少“上周考試錯題總結”的不能加分
- 缺少“進度條”的不能加分
- 缺少“參考資料”的不能加分
-
教材學習中的問題和解決過程, 一個問題加1分
-
代碼調試中的問題和解決過程, 一個問題加1分
-
本周有效代碼超過300分行的(加2分)
- 一周提交次數少於20次的不加分
-
其他加分:
- 周五前發博客的加1分
- 感想,體會不假大空的加1分
- 排版精美的加一分
- 進度條中記錄學習時間與改進情況的加1分
- 有動手寫新代碼的加1分
- 課后選擇題有驗證的加1分
- 代碼Commit Message規范的加1分
- 錯題學習深入的加1分
-
扣分:
- 有抄襲的扣至0分
- 代碼作弊的扣至0分
點評模板:
點評過的同學博客和代碼
其他(感悟、思考等,可選)
- 前幾章大量的敲代碼工作讓同學們的學習都留於形式,只想着完成作業而對代碼的理解少之又少,感覺學好java的方法不是“敲”代碼,而是“修改”代碼,敲好代碼以后如果不理解代碼的能,可以通過修改代碼來具體體會其真正含義。
- 進步來源於發現問題和解決問題,如果大家不去主動思考,簡單機械的完成作業,那學習便失去了意義。
- 當看書看到一處不懂時接着往后看,發現知識聯系的很緊密,所以當遇到一處讓自己很難懂的地方可以先放一放往后看,說不定答案就在那等着你。這兩章都是陌生的東西,以前在C語言學習中沒有遇到過的,要說C語言中有這種異常處理,那也是自己通過編寫代碼來糾錯,或者很容易出錯的goto語句,再或者很冷門的setjmp(),很有限,而java則不同,提供了很多錯誤處理,甚至可以將錯誤拋給方法客戶端處理。
學習進度條
代碼行數(新增/累積) | 博客量(新增/累積) | 學習時間(新增/累積) | 重要成長 | |
---|---|---|---|---|
目標 | 5000行 | 30篇 | 400小時 | |
第一周 | 48/48 | 1/1 | 20/20 | |
第二周 | 98/146 | 1/2 | 30/50 | 學習java的基礎語法 |
第三周 | 302/448 | 1/3 | 27/77 | 學習java對象及封裝 |
第四周 | 1032/1480 | 1/4 | 36/113 | 學習了繼承與多態的關系,以及接口的多態操作 |
第五周 | 609/2025 | 1/5 | 30/143 | 學習了異常處理和Map |
嘗試一下記錄「計划學習時間」和「實際學習時間」,到期末看看能不能改進自己的計划能力。這個工作學習中很重要,也很有用。
耗時估計的公式
:Y=X+X/N ,Y=X-X/N,訓練次數多了,X、Y就接近了。
-
計划學習時間:35小時
-
實際學習時間:30小時
-
改進情況:
有空多看看現代軟件工程課件 軟件工程師能力自我評價表)