20145320 《Java程式設計》第8周學習總結

20145320周岐浩發表於2016-04-24

20145320 《Java程式設計》第8周學習總結

教材學習內容總結

15.1日誌

  • java.util.logging包提供了日誌功能相關類與介面,不必額外配置日誌元件,就可以在標準java平臺使用是其好處。使用日誌的起點是Logger類,要取得Logger例項,必須使用Logger的靜態方法getLogger()
  • 呼叫getLogger()時,必須指定Logger例項所屬名稱空間,名稱空間以“.”作為層級區分,名稱空間層級相同的Logger,其父Logger組態相同。
  • 如果客戶端呼叫了Logger例項的log()方法,首先會依Level過濾資訊,再看看Logger有無設定Filter介面的例項。如果有其isLoggalbe()返回true,才會呼叫Handler例項的public()方法,Handler也可以設定自己的Filter例項,如果有且isLoggalbe()返回true,就呼叫Formatter例項的format()方法格式化資訊,最後才呼叫輸出物件將格式化後的資訊輸出。目前LoggerHandler處理完,還會傳播給父Logger的所有Handler處理(在通過父Logger層級的情況下)
  • 可以通過logging.properties來設定Logger組態,啟動JVM時,指定java.util.logging.config.file系統屬性為.properties

15.2國際化基礎

  • 應用程式根據不同地區使用者,呈現不同語言、日期格式等稱為本地化,如果應用程式設計時,可在不修改應用程式情況下,根據不同使用者直接採用不同語言、日期格式等,這樣的設計考慮稱為國際化,簡稱il8n
  • 國際化的三個重要概念是地區資訊、資源包與基礎名稱。地區資訊的對應類是LocaleResourBundle物件是JVM中資源包的代表物件。代表同一組資訊但不同地區的各個資源包會共享相同的基礎名稱,使用ResourBundlegetBundle()時指定的名稱,就是在指定基礎名稱。
  • 使用ResourBundle時,如何根據基礎名稱取得對應的資訊文件:

    1.使用指定的Locale物件取得資訊文件
    2.使用Locale.getDefault()物件取得資訊文件
    3.使用基礎名稱取得資訊文件
  • 可以使用Date來取得完整日期時間,課單純使用toString()取得日期文字描述,或使用DateFormat格式化日期。若檢視Date的API檔案,會發現許多方法都不再建議使用,而建議改用Calendar的相關方法取代。

15.3規則表示式

  • 規則表示式主要用於字元、字串格式比較,java.util.regex.Pattern例項是規則表示式在JVM中的代表物件,必須通過Pattern的靜態方法compile()來取得,可以使用matcher()方法指定要比較的字串,這會返回java.util.regex.Matcher例項,表示對指定字串的比較器。

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

    書本488頁的ReplaceDemo.java我自己改進了一點,真有意思2333

    String[] change={".Like",".?Like",".*+Like"};
    for(String regex :change){
    System.out.println("ILikeJavaILikeJava".replaceAll(regex,"Do not Like"));
    }
    20145320 《Java程式設計》第8周學習總結

    程式碼除錯中的問題和解決過程

    書本483頁,根據某個字元切割,我自己也寫了一段程式碼

    for(String token:a.split("ed")){
    System.out.println(token);
    }
    這裡是按照ed字元切割,然後自己輸入了一段字元
    20145320 《Java程式設計》第8周學習總結
    發現我的一個單詞也被切割了!
    然後往後翻看到可以用\b標記出單詞邊界,然後修改了程式碼

    for(String token:a.split("\\bed\\b"))
    {
    System.out.println(token);
    }
    沒想到

20145320 《Java程式設計》第8周學習總結
對比書上發現每個單詞間會以空格相隔開,然後我重新寫了一遍

20145320 《Java程式設計》第8周學習總結
我的Like Java呢?難道程式都不讓我Like Java?
難道自己輸入的字元不能分割?我又修改了程式碼

for(String token:"I ed Like ed Java".split("\\bed\\b"))
    {
        System.out.println(token);
}

這次我把我要寫的東西直接放在上面了,結果
20145320 《Java程式設計》第8周學習總結
出現了!這是為什麼!?

程式碼截圖如下(第一次使用git....)
20145320 《Java程式設計》第8周學習總結
20145320 《Java程式設計》第8周學習總結

學習進度條

程式碼行數(新增/累積) 部落格量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 30篇 400小時
第一週 200/200 1/1 20/20
第二週 300/500 1/2 18/38
第三週 500/1000 1/3 22/60
第四周 500/1500 1/4 30/90
第五週 400/1900 1/5 20/110
第六週 400/2300 2/7 20/130
第七週 300/2600 2/9 15/145
第八週 364/2964 2/11 20/165

參考資料

相關文章