20145320 《Java程序设计》第8周学习总结
教材学习内容总结
15.1日志
-
包提供了日志功能相关类与接口,不必额外配置日志组件,就可以在标准java平台使用是其好处。使用日志的起点是java.util.logging
类,要取得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
组态,启动JVM时,指定Logger
系统属性为java.util.logging.config.file
.properties
15.2国际化基础
- 应用程序根据不同地区用户,呈现不同语言、日期格式等称为本地化,如果应用程序设计时,可在不修改应用程序情况下,根据不同用户直接采用不同语言、日期格式等,这样的设计考虑称为国际化,简称il8n
- 国际化的三个重要概念是地区信息、资源包与基础名称。地区信息的对应类是
,Locale
对象是JVM中资源包的代表对象。代表同一组信息但不同地区的各个资源包会共享相同的基础名称,使用ResourBundle
ResourBundle
时指定的名称,就是在指定基础名称。getBundle()
- 使用
时,如何根据基础名称取得对应的信息文档:ResourBundle
1.使用指定的 Locale
对象取得信息文档
Locale
2.使用 Locale.getDefault()
Locale.getDefault()
3.使用基础名称取得信息文档
- 可以使用Date来取得完整日期时间,课单纯使用
取得日期文字描述,或使用toString()
格式化日期。若查看Date的API文件,会发现许多方法都不再建议使用,而建议改用DateFormat
的相关方法取代。Calendar
15.3规则表示式
- 规则表示式主要用于字符、字符串格式比较,
实例是规则表示式在JVM中的代表对象,必须通过java.util.regex.Pattern
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"));
}
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5SO2MTO5QDMzgTMtUDOwcDM5ATMxQjM0AjNxAjMtgzM0UDO48CX0AjNxAjMvwFOzQTN4gzLcd2bsJ2Lc12bj5ycn9Gbi52YuUTMwIzcldWYtl2Lc9CX6MHc0RHaiojIsJye.png)
代码调试中的问题和解决过程
书本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 |
参考资料
- Java学习笔记(第8版)
- 《Java学习笔记(第8版)》学习指导
- ...