20172313 2017-2018-2 《程序設計與數據結構》第九周學習總結

20172313 2017-2018-2 《程序設計與數據結構》第九周學習總結

教材學習內容總結

  1. 初步學習異常,瞭解異常和錯誤的區別。
  2. 異常處理的幾種方法。
  3. 若是程序不處理異常,則將非正常地終止執行,併產生關於描述在何處發生什麼異常的信息。
  4. 能夠用「try-catch」語句對拋出的異常進行捕獲,後能夠有一個可選的finally語句。
  5. 若是在一個異常的發生處沒有捕獲和處理該異常,控制將馬上返回到產生該異常的方法的上一級調用方法。
  6. 能夠從Exception類或它的後代類派生一個新類來定義本身的異常。
  7. 異常分爲可檢測異常與不可檢測異常。
  8. 初步學習I/O流的部份內容和I/O異常。
  9. 初步學習遞歸思想,瞭解遞歸的定義包括非遞歸定義和遞歸定義兩部分。
  10. 學習直接遞歸和間接遞歸,並經過幾個示例來加深理解,初步利用遞歸思想進行遞歸編程。

教材學習中的問題和解決過程

  • 問題1:在學習I/O流的時候,提到過BUfferedInputStream能提升讀取速率額,在查詢了API後,上面有這樣一句解釋建立一個內部緩衝區數組。在讀取或跳過流中的字節時,可根據須要從包含的輸入流再次填充該內部緩衝區。 但仍是不太理解能加快讀取速率的原理究竟是什麼。
  • 問題1解決方案:在查詢了資料之後,有了必定的理解。首先要理解緩衝區的概念:一片內存存儲空間,在讀寫數據的程序須要以前,數據存儲在這裏,這樣就不用每次去物理硬盤上的數據源取了。 而緩衝輸入流(BufferedInputStream)又是什麼呢?
  • 緩衝輸入流(BufferedInputStream):顧名思義,是在緩衝區取數據的輸入流(InputStream)。輸入流都是在硬盤數據源去數據的。要從緩衝區取數據,那緩衝區裏面要有數據的,對吧?誰寫進去呢?固然是輸入流(InputStream)了,因此要創建緩衝輸入流(BufferedInputStream),必須指定一個輸入流。html

  • 問題2:剛開始學習異常處理的時候,不是很明白爲何能夠對異常根本不進行處理,異常既然是程序中出現的問題或非正常狀況,不進行處理不會致使程序出錯嗎?
  • 問題2解決方案:對於不可檢測的異常,程序中能夠選擇捕獲處理,也能夠不處理。這些異常通常是由程序邏輯錯誤引發的,程序應該從邏輯角度儘量避免這類異常的發生。
運行時異常:都是RuntimeException類及其子類異常,如NullPointerException(空指針異常)、IndexOutOfBoundsException(下標越界異常)等,這些異常是不檢查異常,程序中能夠選擇捕獲處理,也能夠不處理。這些異常通常是由程序邏輯錯誤引發的,程序應該從邏輯角度儘量避免這類異常的發生。運行時異常的特色是Java編譯器不會檢查它,也就是說,當程序中可能出現這類異常,即便沒有用try-catch語句捕獲它,也沒有用throws子句聲明拋出它,也會編譯經過。
非運行時異常 (編譯異常):是RuntimeException之外的異常,類型上都屬於Exception類及其子類。從程序語法角度講是必須進行處理的異常,若是不處理,程序就不能編譯經過。如IOException、SQLException等以及用戶自定義的Exception異常,通常狀況下不自定義檢查異常。

代碼調試中的問題和解決過程

  • 問題1:在作編程項目pp11_2的時候,對拋出的異常進行捕捉,但IEDA提示個人代碼錯誤,按照提示進行修改的話會自動把個人「try-catch」語句給刪掉。 java

  • 問題1解決方案:我是按照書上的例題寫的,語法上不該該存在錯誤纔對。我仔細思考了一下找到了問題所在,書上的例題拋出的異常是設定好的,而個人代碼中的異常是本身定義的,因此在運行的時候不知道是何時拋出異常,對代碼修改以下,問題就得以解決了。 git

  • 問題2:在作編程項目pp12_1的時候,對代碼進行編譯運行,提示我超出了索引的範圍。 編程

  • 問題2解決方案:利用Debug對錯誤進行排除發現是本身把右邊的索引範圍給寫錯了(。ŏ_ŏ),改過以後也就沒什麼問題了~ 數組

代碼託管

上週考試錯題總結

  • 錯題1: Can a program exhibit polymorphism if it only implements early binding? A . Yes, because one form of polymorphism is overloading B . No, because without late binding polymorphism cannot be supported C . Yes, because so long as the programs uses inheritance and/or interfaces it supports polymorphism D . Yes, because early binding has nothing to do with polymorphism E . none of the above
  • 解析:雖然繼承和接口支持多態,但只有在具備後期綁定時纔會這樣作。 可是,重載是多態的一種形式(方法)名稱,多個主體,只要程序使用重載,多態就在使用中。
  • 錯誤緣由:課本上和其餘資料上的定義不太一致,有些資料上把方法重載也當作一種多態的實現。
  • 錯題2: A class reference can refer to any object of any class that descends from the class. A . true B . false
  • 解析:這是一種使用類名來聲明引用變量的多態函數。
  • 錯誤緣由:這就是對概念的理解不清了,之後記牢...

結對及互評

  • 博客中值得學習的或問題:
    • 排版精美,對於問題研究得很細緻,解答也很周全。
  • 代碼中值得學習的或問題:
    • 代碼寫的很規範,思路很清晰,繼續加油!

點評過的同窗博客和代碼

  • 本週結對學習狀況

其餘

我從不以爲不忘初心本以是要人努力不放棄,而是要堅守本心,不要忘記當初是爲何開始,才能獲得最終想要的結果。 If you want to feel secure, do what you already know how to do. But if you want to grow, go to the cutting edge of your competence, which means a temporary loss of security. So… whenever you dont quite know you are doing. Know that you are growing.安全

若想要感受安全無虞,去作你原本就會作的事, 若想要真正成長,那就要挑戰能力的極限, 也就是暫時地失去安全感。 因此……當你不能肯定本身在作什麼時, 起碼要知道,你在成長。 — Mark Twain數據結構

學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 30篇 400小時
第一週 126 1/1 20/20
第二週 388/466 1/2 15/35
第三週 706/1162 1/3 17/52
第四周 1104/2266 1/4 20/72
第五週 1126/3392 1/5 15/87
第六週 906/4298 1/6 20/107
第七週 1233/5531 1/7 20/127
第八週 1391/6922 1/8 24/151
第九周 420/7342 1/9 20/171
  • 計劃學習時間:20小時函數

  • 實際學習時間:20小時學習

  • 改進狀況: 看到周圍的同窗都在認真的學習Java,本身在其中也受到了一些感染,這周對Java的學習自我感受良好,這周所學習的課本上的內容不算太難,難的是利用遞歸思想來獨自完成一些遞歸編程,在這周的測驗和課下的代碼編寫中也體現出來了一些問題,仍是存在着考慮不到位,編寫代碼時不細心等問題。對有些概念的理解混淆依然存在,但願能在之後的學習生活中改正這些錯誤,彌補這些問題,可以繼續進步。ui

參考資料

相關文章
相關標籤/搜索