20155213 2016-2017-2 《Java程序設計》第五周學習總結


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辜彥霖結對

  • 個人感覺她的博客排版很好看,很值得借鑒,代碼量和提交次數都挺多,這種態度值得學習,但有點,所解決問題不夠個性化,還是犯着大多數人的錯誤。

  • 評論

評分標准

  1. 正確使用Markdown語法(加1分):

    • 不使用Markdown不加分
    • 有語法錯誤的不加分(鏈接打不開,表格不對,列表不正確...)
    • 排版混亂的不加分
  2. 模板中的要素齊全(加1分)

    • 缺少“教材學習中的問題和解決過程”的不加分
    • 缺少“代碼調試中的問題和解決過程”的不加分
    • 代碼托管不能打開的不加分
    • 缺少“結對及互評”的不能打開的不加分
    • 缺少“上周考試錯題總結”的不能加分
    • 缺少“進度條”的不能加分
    • 缺少“參考資料”的不能加分
  3. 教材學習中的問題和解決過程, 一個問題加1分

  4. 代碼調試中的問題和解決過程, 一個問題加1分

  5. 本周有效代碼超過300分行的(加2分)

    • 一周提交次數少於20次的不加分
  6. 其他加分:

    • 周五前發博客的加1分
    • 感想,體會不假大空的加1分
    • 排版精美的加一分
    • 進度條中記錄學習時間與改進情況的加1分
    • 有動手寫新代碼的加1分
    • 課后選擇題有驗證的加1分
    • 代碼Commit Message規范的加1分
    • 錯題學習深入的加1分
  7. 扣分:

    • 有抄襲的扣至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小時

  • 改進情況:

有空多看看現代軟件工程課件 軟件工程師能力自我評價表)

參考資料


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM