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()方法格式化信息,最后才调用输出对象将格式化后的信息输出。目前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"));
    }

代码调试中的问题和解决过程

书本483页,根据某个字符切割,我自己也写了一段代码

for(String token:a.split("ed")){
   System.out.println(token);
}

这里是按照ed字符切割,然后自己输入了一段字符

发现我的一个单词也被切割了!
然后往后翻看到可以用标记出单词边界,然后修改了代码

for(String token:a.split("\ed\"))
    {
        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

参考资料

原文地址:https://www.cnblogs.com/zqh20145320/p/5428219.html