20165226 2017-2018-3 《Java程序設計》第5學習總結

20165226 2017-2018-3 《Java程序設計》第5周學習總結

教材學習內容總結

第七章 內部類與異常類

  • 匿名類建立對象:
new Bank() {
        匿名類的類體
};
  • 異常類
    • 處理方式有兩種:
      • 使用try..catch..finally進行捕獲;
      • 在產生異常的方法聲明後面寫上throws 某一個Exception類型,如throws Exception,將異常拋出到外面一層去。
    • 斷言進行調試
assert booleanExpression;
assert booleanExpression:messageException;

第十章 輸入、輸出流

  • 字節處理:兩個最基本字節流的抽象父類InputStream、OutputStream,通常用他的繼承類。html

    • FileInputStream:java

      - 構造:FileInputStream(File file)、FileInputStream(StringfileName)
      
      - 主要方法:`int read(int d)、int read(byte[] buf) 。
    • FileOutputStream:git

      • 構造:FileOutputStream(File file)、FileOutputStream(StringfileName)

    注意:區別於raf的寫,包括以後的流的寫,只要寫入無論寫入多長會直接將原有的文件內容清空覆蓋,不會像raf寫入長度不夠進行保留覆蓋。算法

  • 處理字節的高級流:
    • BufferedInputStream 緩衝輸入流編程

      • 構造:BufferedInputStream(fis) 方法同FileInputStream
    • BufferedOutputStream 緩衝輸出流ide

      • 構造:BufferedOutputStream(fos) 方法同FileOutputStream
  • 字符處理:兩個最基本的字符流抽象父類:Reader、Writer學習

    - InputStreaReader
    
       - 構造:InputStreaReader(fis,String charsetName)  其中charsetName就是編碼集如:」GBK」、」UTF-8」等
    
    - OutputStreamWriter:
    
       - 構造:OutputStreamWriter(fos, String charsetName)其中charsetName就是編碼即輸出字符的編碼形式,因此當輸入讀取數據時,必須和該文件寫入的編碼一致,尤爲中文。
    
       - 主要方法:void writer(int c) 寫出int的低16位、voidwriter(char[] chs)、void writer(String)、voidwriter(char[] chs,int offset, int len)

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

  • 問題一:書中P164中,看到匿名類的特色,其中有一個不是很懂,就是匿名類能夠訪問外嵌類中的成員變量和方法,匿名類的類體中不能夠聲明static成員變量和static方法
  • 問題一解決方案:書上至關因而一個性質,並無再盡心給解釋說明,網上搜了一下,static類型還應該算是類的類型,應該不能訪問實例的成員。測試

  • 問題二:看到書上P164時,想到匿名內部類和內部類有什麼區別呢?編碼

  • 問題二解決方案:通過查找資料,得出如下結論
    - 內部類:內部類能夠是static的或者非static的,static內部類只能包含靜態方法和靜態類變量,只能訪問外部類的靜態元素,內部類能夠實例化,屢次使用。idea

    - 匿名內部類:它只能使用一次,不區分static和非static。若是用到外部類的變量的話,必須是類變量或者實例變量,就是必須是類定義的變量,或者final的局部變量。匿名內部類若是是繼承某個類的話是能夠重寫那個類的方法的,這個和普通內部類同樣。
  • 問題三:在學習P166上異常類中出現了錯誤異常的概念,在想二者是否指一個含義?仍是有不一樣含義。

  • 問題三解決方案:通過查找資料,得出如下結論
    - Exception(異常)是應用程序中可能的可預測、可恢復問題。異常通常是在特定環境下產生的,一般出如今代碼的特定方法和操做中。在 EchoInput 類中,當試圖調用 readLine 方法時,可能出現 IOException 異常。
    - Error(錯誤)表示運行應用程序中較嚴重問題。大多數錯誤與代碼編寫者執行的操做無關,而表示代碼運行時 JVM(Java 虛擬機)出現的問題。例如,當 JVM 再也不有繼續執行操做所需的內存資源時,將出現 OutOfMemoryError。

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

  • 問題一:看到P163的內部類對應的字節碼文件的名字格式是「外嵌類名$內部類名」時,想着是否須要把整個文件命名更改一下,換成RedCowForm$RedCow.java什麼的。
  • 問題一解決方案:沒有更更名,而後用javac編譯了一下,自動產生了RedCowForm$RedCow.class的字節碼文件。

  • 問題二:在運行Example7_7時,出現瞭如下錯誤

  • 問題二解決方案:仔細校對,文件名和主類名不一樣。

  • 問題三:在運行Example10_3的時候,發生了文件的沒法運行的狀況。

  • 問題三解決方案:用Windows中的idea進行代碼編程再運算,路徑符合。

  • 問題四:出現類名錯誤

  • 問題四解決方案:仔細校對後發現class拼寫成calss,因而編譯不經過

  • 問題五:運行Example10_5時發現運行結果解密不正確。

  • 問題五解決方案:回到代碼位置,而後將+改爲-,編譯運行結果正確

  • 問題六:運行出現沒有文件的顯示

  • 問題六解決方案:新建一個文件並輸入內容。而後就運行成功。

代碼託管

上週考試錯題總結

  • 錯題一:第六題,答案是ACD,少選了D選項。
下列說法正確的是 
A 成員變量的數據類型能夠是Java中的任何一種數據類型。
B 成員變量和局部變量的有效範圍爲整個類。
C 方法返回的數據的類型能夠是Java中的任何一種數據類型。
D 方法體內能夠對成員變量和方法體中聲明的局部變量進行操做。
  • 錯題一總結:概念不清楚,之後看書應該更細緻一些。

  • 錯題二:正確答案: B D E ,我多選了A。

關於類的敘述,正確的是 
A Java程序以類中的方法爲「基本單位」。
B 每一個源文件都是一個獨立的編譯單位。
C 與類所在源文件名稱相同的類,稱爲主類。
D 使用「javac Example4_5.java」編譯P67的Example4_5.java時,自動編譯了Rect.java和Lader.java。
E 可使用「javac *.java」編譯P67該目錄下的全部Java文件。
  • 錯題二總結:在書P66的4.4節。A項:以類爲基本單位。仍是概念不清楚。

  • 錯題三:正確答案: B ,個人選擇是A。

下列關於參數傳值的說法,錯誤的是 
A 對象調用方法時,參數變量必須有具體的值。
B 方法若是改變參數的值,向參數傳值的變量的值也會改變。
C 能夠向int型變量傳遞一個short值。
D 若是改變參數變量所引用的實體,原變量的實體會發生一樣的變化。
E 對於可變參數,如一個參數表明x,那麼x.length等於x所表明的參數的個數。
  • 錯題三總結:在書P68的4.5節。方法若是改變參數的值,不會影響向參數「傳值」的變量的值。

  • 錯題四:正確答案: A D ,個人答案是CD。

A println()方法屬於java.lang.*,但因爲其很是經常使用,編譯器自動添加了java.lang.*,所以使用println()方法時不須要import。
B 若是一個文件中有class的定義、import、package,則其前後順序爲import、package、class。
C 可使用import java.*;將類庫中的全部的類都包含進去。
D java.math提供用於執行任意精度整數算法 (BigInteger) 和任意精度小數算法 (BigDecimal) 的類。
  • 錯題四總結:C項:不能夠太過簡單,起碼要標註包的名稱。

  • 錯題五:正確答案: A B D ,個人答案: A B C D 。

下列關於訪問權限的敘述,正確的是 
A 類方法老是能夠操做該類中的類變量,與訪問限制符無關。
B 當在其餘類中建立一個該類的對象時,該對象不能訪問本身的私有變量。
C public、protected、private都可以用來修飾類。
D 若是源文件使用import語句引入另外一個包的類,並建立了一個該類的對象,那麼該類的這個對象不能訪問本身的友好變量和友好方法。
  • 錯題五總結:在書的4.12節,P95中提到不能用protected和private修飾類

結對及互評

  • 博客中值得學習的或問題:
    • 要素全面
    • 很認真細緻
    • 排版簡介美觀
  • 代碼中值得學習的或問題:
    • 代碼中文件分類簡潔
    • 很認真

點評過的同窗博客和代碼

  • 本週結對學習狀況
    • 20165230
      • 結對學習內容
      • 學習如何使用jdb,在jdb上進行代碼調試

其餘

這周老師講了idea上的一系列操做,如何設置斷點,以及單步執行,同時以實際例子闡釋了僞代碼、產品和測試代碼。其中強調了equals的用法。對於這些知識點我目前沒有徹底掌握,課後必定得多看再進一步實驗體會程序的編譯運行等操做。

學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 30篇 400小時
第四周 1105/1300 1/2 30/90
第五週 1229/1300 1/2 20/90

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

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

  • 計劃學習時間:30小時

  • 實際學習時間:18小時

  • 改進狀況:

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

參考資料

相關文章
相關標籤/搜索