1. 程式人生 > >20165318 2017-2018-2 《Java程序設計》第五周學習總結

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

都是 boolean 通過 接口 table post 運行 ons 否則

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

學習總結

  • 在使用IDEA時,由於我之前編寫的代碼都是使用GBK編碼,使用IDEA打開時,由於IDEA默認為UTF-8,代碼會出現中文亂碼,這時候可以使用如下方法,將IDEA的編碼改成GBK
    技術分享圖片

技術分享圖片

教材內容總結:

第七章 內部類與異常類

一、 內部類與匿名類

  • 內部類:
    1.內部類可以使用外嵌類的成員變量和方法。
    2.類體中不可以聲明類變量和類方法。
    3.內部類僅供外嵌類使用。
    4.類聲明可以使用static修飾,static內部類不能操作外嵌類中的實例成員變量。
    :非內部類不可以是static類。

  • 匿名類:
    1.匿名類一定是內部類。
    2.可以使用外嵌類的成員變量和方法。
    3.不能聲明類變量和類方法。
    4.必須使用父類的構造方法。
    5.可以直接使用父類的方法,也可重寫。

用bank的一個子類(匿名類)創建對象

new Bank() {        //使用父類的構造方法
 匿名類的類體 
};                           //**註意:結尾加分號**

與接口有關的匿名類

new Computable() {
 實現接口的匿名類的類體         //**類體必須要重寫接口中的全部方法**
};

二、異常類

  • 異常是指程序運行時可能出現的一些錯誤。

  • public static int parseInt(String s)可以將“數字”格式的字符串轉化為 int 型數據。

  • try - catch 語句
    `try { 包含可能發生異常的語句 } catch(ExceptionSubClass1 a) { ... } catch(ExceptionSubClass1 b) { ... }

  • 一旦try部分拋出異常,或調用某個可能拋出異常對象的方法,並且該方法拋出了異常對象,那麽try部分將立刻結束執行,轉向相應的catch部分。程序可以將發生異常後的處理放在catch部分。

  • try - catch語句可以由幾個catch組成,分別處理發生的相應異常。

  • 各個catch參數中的異常類都是Exception的某個子類,表示try部分可能發生的異常,這些子類之間不能有父子關系,否則保留一個含有父類參數的catch即可。

  • 自定義異常類的步驟:
    1.定義自己的異常類(Exception的子類);
    2.在可能出現異常的方法中,聲明時使用throws關鍵字聲明要產生的若幹個異常,並在方法體中具體給出產生異常的操作,用throw

    拋出異常對象。
    3.在程序中使用try-catch塊語句調用可能發生異常的方法。

  • finally語句
    • 如果在try-catch語句中執行了return語句,那麽finally子語句依舊會被執行。
    • try-catch語句中執行了程序退出代碼,執行System.exit(0);那麽不執行finally子語句。
三、斷言
  • 程序正式運行時,斷言語句自動關閉,可以使用java -ea 文件名;

  • 程序調試階段,斷言語句發揮正常作用;

  • 斷言語句的兩種格式
    • assert bolleanException:當bolleanException的值是true時,程序從斷言語句處繼續執行;值是false時,程序從斷言語句處停止執行。
    • assert blooeanException:messageException:當bolleanException的值是true時,程序從斷言語句處繼續執行;值是false時,程序從斷言語句處停止執行,並輸出messageException表達式的值。

第十章 輸入、輸出流

  • 輸入流的指向稱為它的源,程序通過輸入流讀取源中的數據

  • 輸出流的指向稱為它的目的地,程序通過輸出流把數據傳送到目的地

一、File

  • File類的對象主要用來獲取文件本身一些信息,不涉及對文件的讀寫操作。

  • 構造方法 :
    File(String filename)
    File(String directoryPath,String filename)
    File(File dir,String filename)

  • 文件的屬性:常使用File類的一些方法獲取文件本身的一些信息。

  • 創建目錄:File對象調用方法public boolean mkdir()創建一個目錄,成功返回true,否則(該目錄已存在)返回false。

  • 運行可執行文件:Runtime ec = Runtime.getRuntime();

  • 使用輸入流步驟:

1.設定輸入流的源;
2.創建指向源的輸入流;
3.讓輸入流讀取源中的數據;
4.關閉輸入流;

註:程序必須在try-catch語句中的try塊部分創建輸入流,在catch塊部分檢測並處理這個異常。

  • 輸出流步驟與輸入流類似

  • 讀取 :輸入流讀取 int read方法,輸出流讀取void write方法。

  • 關閉流:輸入流in.close();,輸出流void.close();

  • 緩沖流

1.BufferedReaderBufferedWriter類創建的對象稱為緩沖輸入、輸出流,二者增強了讀寫文件的能力。
2.BufferedReader流和BufferedWriter流,二者的源和目的地必須是字符輸入流和輸出流。
3.構造方法BufferedReader(Reader in);``BufferedWriter(Writer out);

  • 隨機流
    1.RandomAccessFile類創建的流稱為隨機流,可以從這個流中讀取文件的數據,也可以通過這個流寫入數據到文件。
    2.RandomAccessFile流指向文件時,不刷新文件。

  • 數組流

  • 數據流

  • 對象流

  • 使用Scanner類和正則表達式來解析文件的特點是以時間換取空間,即解析的速度相對比較慢,但節省內存

教材中問題與解決過程

  • 問題1:為什麽要使用匿名類:

  • 解決過程:如果一個方法的參數類型是A類,用戶希望向方法傳遞A的子類對象,但系統沒有提供符合要求的子類,那麽用戶在編寫代碼時就可以考慮使用匿名類。

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

  • 問題1:運行Example7_2時報錯
    技術分享圖片

  • 解決過程:檢查後發現,使用輸出方法時,習慣性的使用了System.out.println而正確的代碼是System.out.printf

  • 問題2:運行Example7_7時出現以下問題

技術分享圖片

  • 解決過程:仔細檢查代碼後發現,在編碼時多寫了一個“}”,導致主類沒辦法被識別,使用IDEA中的代碼格式化也沒有發現錯誤。

  • 問題3:自己編寫課後習題第四大題,使用斷言,本應該當輸入數字大於100或小於0時,終止執行,但實際運行卻出現如下錯誤:

技術分享圖片

  • 解決過程:重新學習斷言相關知識點時發現,當斷言判斷條件為true時,程序繼續執行,為false時,才會停止執行。而我第一遍看的時候沒有記清楚,剛好將判斷條件寫反了,導致程序不能運行,改正過後,就可以正常運行了。結果如下圖:

技術分享圖片

  • 問題4:調試Example10_2時,運行後沒有輸出結果。

  • 解決過程:看書中相關知識後,發現我輸入流打開的目錄中沒有.java類型的文件,在這個目錄中添加.java類型的文件,就可以正常運行了。

  • 問題5:調試Example10_4時,運行提示以下錯誤:

技術分享圖片

  • 解決過程:問題在於打開文件的路徑不正確,將Example10_4.java改為src/Example10_4.java就可以正常運行了。

  • 問題6:運行Example10_17時,對話框不會操作問題,實際輸出的對話框與書上的截圖有差距

技術分享圖片

  • 解決過程:需要點擊左上角的“文件”下拉菜單的“打開”,才能得到書上截圖的效果。同時我發現如果把 “楷體_gb2312” 改為 “UTF-8” 不會影響窗口的操作性。

技術分享圖片

碼雲鏈接

https://gitee.com/besti-is-java-2018/20165318_sun_xiaoxuan

代碼截圖

技術分享圖片

技術分享圖片

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