20155317 王新瑋 2016-2017-2 《Java程序設計》第5周學習總結

20155317 王新瑋 2016-2017-2 《Java程序設計》第5周學習總結

教材學習內容總結

異常處理 & Collection與Map 異常繼承架構

  • 錯誤的對象繼承java.lang.Throwable類,Throwable有兩個子類Java.lang.Error與java.lang.Exceptions.
  1. a.Erroe與其子類實例表示嚴重系統錯誤。
  2. b.Exception與其子類實例是異常處理。
  • 必須明確使用try,catch語法加以處理,或者用throw聲明這個方法會拋出異常,不然會編譯失敗。
  • 受檢異常:必定要處理Exception,但不屬於RuntimeException.
  • 非受檢異常:程序不強迫處理。RuntimeException是客戶端引起的,屬於客戶端有關修改的內容,若是必定要處理,建議是呈現友好信息。
  1. 注:若是父類異常對象在子類異常對象前被捕捉,則catch子類異常對象區塊將永遠不會被執行。故先捕捉子類。

try、catch語法html

  • 在使用相關程序時會有許多錯誤,例以下列代碼 這裏嘗試使用try、catch語法,發現JVM會嘗試執行try區塊中的程序代碼,若是發生錯誤,就會跳離錯誤發生點比較catch括號中聲明的類型,若符合被拋出錯誤對象類型。 try、catch語法能夠捕捉try部分的異常:
  • 無try、catch語法時,出現異常的時候程序就會報錯。
  • 使用try、catch語法時,出現異常時,程序可仍以正常運行,只是把錯誤信息存儲到Exception裏。
  • 即catch功能爲提取異常信息。

throw & throws

  • 方法設計流程出現異常時,能夠用throws FileNotFoundException拋出異常,經過調用方法的客戶端來處理。

Collection和Map架構

Collection

  • java.util.List接口中,記錄每一個對象的索引順序,依照索引取回對象。
  • java.util.Set接口中,收集對象不重複,並具備集合的行爲。
  • java.util.Queue接口中,收集對象時以隊列方式,收集的對象加入尾端,取得對象時從前端。
  • java.util.Deque接口中,對Queue 的兩端進行加入、移除等操做。

Map

  • 便是以鍵值對形式的存放數據的容器,主要以哈希Map做爲其經常使用的實現類。Lambada和泛型

Lambada

  • 該表達式主要功能爲:簡化匿名函數的寫法,減輕程序員負擔。

泛型

  • 使用Collection收集對象時,因爲收集對象的形態未知,所以內部操做時,都是使用object來參考被收集的對象,取回對象時也是以object類型返回。
  • 故若想針對某類定義的行爲操做,必須告訴編譯程序,讓對象從新扮演該類型。JDK5以後增長了泛型語法。若接口支持泛型,在操做時也會比較方便,只要聲明參考時有指定類型,那麼建立對象時就不用再寫類型了。
  • 泛型也能夠僅定義在方法上,最多見的是在靜態方法上定義泛型。

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

  • 學習8.1.1時,看到try、catch捕捉錯誤的案例,書中只捕捉了一個錯誤,若是有多個錯誤該如何捕捉?前端

  • 解決:學習到8.1.2時看到書中片斷
try{ 
事情... 
}catch(IOException | InterruptedException | ClassCastException e) { 
e.printStackTrace();
 }
  •  本週把第三章的課後操做題給編了一下,並且都能比較順利地編出來,編寫過程當中遇到的一些錯誤也能本身發現並糾正。
  • import java.util.Scanner;
    
    public class Fibonacci {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            int x = 0;
            int[] Fi = new int[51];
            Fi[0] = 0; Fi[1] = 1;
            System.out.println("求幾個費式數?(50之內)");
            int num = scanner.nextInt();
            if (num >= 2) {
               for (int j = 2; j < num; j++){
                   Fi[j] = Fi[j - 1] + Fi[j - 2];
               }
            }
            for (int i = 0; i < num; i++){
                System.out.printf("%3d;",Fi[i]);x++;
                if (x == 5){
                    System.out.println();
                    x = 0;
                }
    
            }
        }
    }

     

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

  • public Test() throws RepletException {
        try {
          System.out.println("Test this Project!")
        }
        catch (Exception e) {
          throw new Exception(e.toString());
        }
      }
  • 問題:throw和throws的區別有什麼啊?這裏改爲throw能夠嗎?
  1. 通過上網搜查後我發現:
  2. throws是用來聲明一個方法可能拋出的全部異常信息,而throw則是指拋出的一個具體的異常類型。一般在一個方法(類)的聲明處經過throws聲明方法(類)可能拋出的異常信息,而在方法(類)內部經過throw聲明一個具體的異常信息。throws一般不用顯示的捕獲異常,可由系統自動將全部捕獲的異常信息拋給上級方法。throw則須要用戶本身捕獲相關的異常,然後在對其進行相關包裝,最後在將包裝後的異常信息拋出。
  • 問題2:第八章的學習是異常處理,就是咱們平時編程過程當中會出現的小問題都有了詳細的解答。經過本章的學習我知道了使用try、catch語法,JVM會嘗試tyr中的代碼若是錯誤便能跳過錯誤點,比對catch中聲明的類型。而且還了解了不少模塊問題出現問題所提示的結果顯示,之後的編程中可能會有各類各樣的問題,但經過本章的學習瞭解到了不少問題出現的緣由,下次編程若出現,即可以很快地檢查對應區域代碼,收穫頗多。

代碼託管

 

 

上週考試錯題總結

  • 判斷:Java中全部的對象都有equals()方法。(OK)
  • 實現一個類中的equals()方法時,必定要同時實現(hashCode())方法
  • 面向對象中,設計經驗能夠用(設計模式)表達
  • 判斷:final能夠用在類,方法,變量前。(OK)
  • Math中的abs()方法能夠Override.(X)
  • 判斷:接口中 int STOP等價於public static final int STOP. (ok)
  • 填空:實現接口表示(擁有行爲),但不是ISA關係。
  • 判斷:Math中的abs()方法能夠Override.(X)

點評過的同窗博客和代碼

其餘(感悟、思考等,可選)

這周又接觸到了沒接觸過的新知識、新概念。不過凡事都講究個基本功,感受要是前面這些的基礎知識學的不透徹不理解,後面就更別說了,確定愈來愈難,好好學!java

學習進度條

  代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 30篇 400小時  
第一週 200/200 2/2 20/20  
第二週 300/500 2/4 18/38  
第三週 500/1000 3/7 22/60  
第四周 300/1300 2/9 22/90  
第五週 486/1300 2/9 21/90

嘗試一下記錄「計劃學習時間」和「實際學習時間」,到期末看看能不能改進本身的計劃能力。這個工做學習中很重要,也頗有用。 耗時估計的公式 :Y=X+X/N ,Y=X-X/N,訓練次數多了,X、Y就接近了。git

參考:軟件工程軟件的估計爲何這麼難軟件工程 估計方法程序員

  • 計劃學習時間:XX小時編程

  • 實際學習時間:XX小時設計模式

  • 改進狀況:架構

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

參考資料

相關文章
相關標籤/搜索