20155330 2016-2017-2 《Java程序設計》第五周學習總結
教材學習內容總結
學習目標
- 理解異常架構
- 掌握try...catch...finally處理異常的方法
- 會用throw,throws
- 理解Collection和Map架構
- 會用常見的數據結構和算法
- 了解Lambada和泛型
第八章 章節主要內容
小結
- Throwwable定義了取錯誤信息、堆棧追蹤(Stack Trace)等方法,它有兩個子類:java.lang.Error與java.lang.Exception。
- catch括號中列出的異常不得有繼承關系,否則會發生編譯錯誤。
- 如果父類異常對象在子類異常對象前被捕捉,則catch子類異常對象將永遠不會被執行。
- 在catch區塊進行完部分錯誤處理之后,可以使用throw將異常再拋出。
- 使用throw重拋異常時,異常的追蹤堆棧起點,仍是異常的發生根源,而不是重拋異常的地方。
- JDK7的嘗試關閉資源語法可套用的對象,必須操作java.lang.AutoCloseable接口。
第九章 章節主要內容
小結
- Java中判斷對象是否重復時,須同時操作調用hashCode()與equals()方法。
- 如果對象有操作Queue,並打算以隊列方式使用,且隊列長度受限,應使用offer()、poll()與peak()等方法。
- 在Java的規范中,跟順序有關的行為,通常對象本身是Comparable或另行指定Comparator對象告知如何排序。
教材學習中的問題和解決過程
- 問題1:除了InputMismatchException錯誤外,Java中常見的錯誤類型還有哪些?
- 解決方案:
-
Exception 各種異常的根類
如果你不知道將發生的異常集體屬於哪,而可以肯定種這個地方會出現異常時,可以把異常類型定義為Exception。
-
ArithmeticException 算數運算錯誤異常
這個異常是在算數運算時經常遇到的,常見的情況是除數為0時拋出的異常。
-
ArrayIndexOfOutBoundsException 數組下標越界
編程時要記住Java數組下標是從0開始的,數組下標最大值為數組長度減1,如arr[10],最后一個數組元素是arr[9],如果寫成arr[10]就會出現ArrayIndexOfOutBoundsException異常。
-
NullPointException 空指針異常
這個異常是針對調用未經初始化或未定義的對象拋出的異常。
-
ClassNotFoundException 不能加載所需的類
在java文件編譯后,可能是由於需要把.class文件移到了其他的文件夾,此時引用這個.class文件要注意修改其路徑,否則會拋出ClassNotFoundException異常。
-
InputMismatchException 輸入的數據類型與所需類型不匹配異常
比如你需要int類型,但是通過輸入框得到的是String類型,就會拋出InputMismatchException異常。
-
IllegalArgumentException 方法接受非法參數
這個是傳入方法中的參數類型不正確,如方法plus(int a,int b),調用時寫成a.plus(1,a)就會出現IllegalArgumentException異常。
-
NumberFormatException 字符串轉換成數字異常
在數據類型強制轉換時出現的異常,字符串“123”轉換成數字123不會出現異常,但是字符串“1@23”轉換成int類型就會拋出ClassCastException異常。
-
代碼調試中的問題和解決過程
- 問題1:課本中的Students代碼在編譯時出錯。
- 解決方案:經檢查和搜索發現是由於
System.out.println(set)
中的set
關鍵字設置錯誤,括號中的關鍵字應為students
。 - 問題2:在編譯課本代碼SimpleLinkedList時出現無法編譯運行的錯誤
- 解決方案:結合課本知識以及網上搜索,得出的結論是由於findElemOf函數的返回類型是Object,所以該程序的last節點的調用應該為last.o而非last.elem。
代碼托管
-
代碼提交過程截圖:
-
代碼量截圖:
上周考試錯題總結
- 錯題1:14. CH06 判斷:抽象類的子類可以是抽象類也可以不是。(OK)
- 理解情況:Java中的抽象類可以含有非抽象方法,繼承自抽象類的子類對於父類中所有的非抽象方法,覆蓋不覆蓋都行,但是所有抽象方法必須要覆蓋,如果不覆蓋,那么:這個子類必須也是抽象類,被聲明為abstract。
- 錯題2:20. CH06 判斷:final可以用在類,方法,變量前。(OK)
- 理解情況:final的用法:
- 修飾變量,為常量,值不可變;
- 修飾對象,值可變,引用不變;
- 修飾方法,方法不可重寫;
- 修飾類,無子類,不可以被繼承,更不可能被重寫。
結對及互評
搭檔的博客中提到了一些我在學習過程中沒有注意到的問題,解決的方案也讓人易懂,值得我借鑒學習。
評分標准(滿分10分)
-
從0分加到10分為止
-
正確使用Markdown語法(加1分):
- 不使用Markdown不加分
- 有語法錯誤的不加分(鏈接打不開,表格不對,列表不正確...)
- 排版混亂的不加分
-
模板中的要素齊全(加1分)
- 缺少“教材學習中的問題和解決過程”的不加分
- 缺少“代碼調試中的問題和解決過程”的不加分
- 代碼托管不能打開的不加分
- 缺少“結對及互評”的不能打開的不加分
- 缺少“上周考試錯題總結”的不能加分
- 缺少“進度條”的不能加分
- 缺少“參考資料”的不能加分
-
教材學習中的問題和解決過程, 一個問題加1分
-
代碼調試中的問題和解決過程, 一個問題加1分
-
本周有效代碼超過300分行的(加2分)
- 一周提交次數少於20次的不加分
-
其他加分:
- 周五前發博客的加1分
- 感想,體會不假大空的加1分
- 排版精美的加一分
- 進度條中記錄學習時間與改進情況的加1分
- 有動手寫新代碼的加1分
- 課后選擇題有驗證的加1分
- 代碼Commit Message規范的加1分
- 錯題學習深入的加1分
-
扣分:
- 有抄襲的扣至0分
- 代碼作弊的扣至0分
點評模板:
- 基於評分標准,我給本博客打分:9(0-10)。得分情況如下:
- 正確使用Markdown語法(加1分);
- 模板中的要素齊全(加1分);
- 教材學習中的問題和解決過程, 加1分;
- 代碼調試中的問題和解決過程, 加2分;
- 本周有效代碼超過300分行的(加2分);
- 其他加分,加2分:
- 排版精美的加1分;
- 代碼Commit Message規范的加1分。
點評過的同學博客和代碼
其他(感悟、思考等,可選)
這周的學習任務依然很繁重。經過五周的學習,發現課本中有不少漏洞,特別是示例代碼常常會出錯,這也考驗了我們解決問題的能力。在學習過程中,查詢API是個很重要的方法,但是現在還不能熟練的運用,多數時間還是靠直接上網搜索的方式來解決問題。
另外,從這周開始的結對學習給我的幫助也很大。因為每個人的學習方法不同,所以博客中體現的風格也不一,更重要的是,在學習過程中遇到的問題不同,在閱讀他人的博客時,可以發現自己疏漏的問題,並加以學習。
學習進度條
代碼行數(新增/累積) | 博客量(新增/累積) | 學習時間(新增/累積) | 重要成長 | |
---|---|---|---|---|
目標 | 5000行 | 18篇 | 300小時 | |
第一周 | 15/15 | 1/1 | 15/15 | |
第二周 | 159/174 | 1/2 | 20/35 | |
第三周 | 414/588 | 1/3 | 18/53 | 了解了封裝、對象 |
第四周 | 461/1049 | 1/4 | 18/71 | |
第五周 | 786/1835 | 1/5 | 18/89 |
-
計划學習時間:16小時
-
實際學習時間:18小時