天天看点

20145320 《Java程序设计》第8周学习总结

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"));
    }
           
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

参考资料

  • Java学习笔记(第8版)
  • 《Java学习笔记(第8版)》学习指导
  • ...