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()
方法格式化資訊,最後才呼叫輸出物件將格式化後的資訊輸出。目前Logger
的Handler
處理完,還會傳播給父Logger
的所有Handler
處理(在通過父Logger
層級的情況下) - 可以通過
logging.properties
來設定Logger
組態,啟動JVM時,指定java.util.logging.config.file
系統屬性為.properties
15.2國際化基礎
- 應用程式根據不同地區使用者,呈現不同語言、日期格式等稱為本地化,如果應用程式設計時,可在不修改應用程式情況下,根據不同使用者直接採用不同語言、日期格式等,這樣的設計考慮稱為國際化,簡稱il8n
- 國際化的三個重要概念是地區資訊、資源包與基礎名稱。地區資訊的對應類是
Locale
,ResourBundle
物件是JVM中資源包的代表物件。代表同一組資訊但不同地區的各個資源包會共享相同的基礎名稱,使用ResourBundle
的getBundle()
時指定的名稱,就是在指定基礎名稱。 使用
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"));
}
程式碼除錯中的問題和解決過程
書本483頁,根據某個字元切割,我自己也寫了一段程式碼
for(String token:a.split("ed")){
System.out.println(token);
}
這裡是按照ed字元切割,然後自己輸入了一段字元
發現我的一個單詞也被切割了!
然後往後翻看到可以用\b
標記出單詞邊界,然後修改了程式碼for(String token:a.split("\\bed\\b"))
{
System.out.println(token);
}
沒想到
對比書上發現每個單詞間會以空格相隔開,然後我重新寫了一遍
我的Like Java呢?難道程式都不讓我Like Java?
難道自己輸入的字元不能分割?我又修改了程式碼
for(String token:"I ed Like ed Java".split("\\bed\\b"))
{
System.out.println(token);
}
這次我把我要寫的東西直接放在上面了,結果
出現了!這是為什麼!?
程式碼截圖如下(第一次使用git....)
學習進度條
程式碼行數(新增/累積) | 部落格量(新增/累積) | 學習時間(新增/累積) | 重要成長 | |
---|---|---|---|---|
目標 | 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 |