20145311 《Java程序设计》第八周学习总结
教材学习内容总结
第十四章 NIO与NIO2
高级的输入输出处理,可以使用NIO(New IO),NIO2是文件系统的API
第十五章 通用API
15.1日志
15.1.1日志API
使用日志的起点是Logger类,要取得Logger类,必须使用Logger的静态方法getLogger(),Logger.log()方法可以用来输出信息。 默认的Logger还会记录时间、类、方法等信息,Logger是记录信息的起点,还会经过一些过滤才会输出信息,输出信息实际上是由Handler负责。
Logger有层级关系,每个Logger处理完自己的日志动作后,回想父Logger传播,让父Logger也可以处理日志15.1.2指定日志层级
Logger实例输出是有层级的,Level.All会用于允许所有信息输出
15.1.3Handler与Formatter
MemoryHandler不会格式化日志信息,信息会暂存于内存缓冲去,知道超过缓冲区大小,才将信息输出至指定的目标Handler
如果不想让父Logger的Handler处理日志,可以调用Logger实例的setUseParentHandlers()设定为false15.1.4自定义Handler、Formatter与Filter
格式化由Formatter负责,信息过滤由Filter负责
15.1.5logging.properties
可以通过logging.properties来设定Logger组态,这样就可以不用使用程序对组态进行修改
15.2国际化(internationalization)
15.2.1ResourceBundle
ResourceBundle可以用来做信息绑定,将日后可能要改变的信息移到程序之外。 .properties文档必须放在CLASSPATH的路径设定下
15.2.2Locale
Locale信息的对应类为Locale,在建立Locale实例时,可以指定语言编码与地区编码
15.3规则表达式(Regular Expression)
15.3.1
String的split方法接受的是规则表达式,规则表达式基本山包括两种字符:字面意义字符(Literals)和元字符(Metacharacters),元字符在规则表达式中有特殊意义,要比较这些字符必须加上忽略符号,在java中要将规则表示式撰写在“”中与直接写规则表达式是不同的,一般需要加上\等符号。
多个字符归在一起成为一个字符类放在[]中,有些常用的字符类不用放在[]中,成为预定义字符类,字符类在使用时需要多查询API
看到贪婪量词,比较器会将剩余文字整个吃掉,再逐步吐出,结果是贪婪量词会尽可能地找出长度最长的符合文字 在贪婪量词后加上?将会成为逐步量词,逐步量词会尽可能的找出长度最短的符合文字
在贪婪量词后加上+将会成为度吐量词,比较器看到独吐量词会先将剩余文字吃掉,然后看看独吐量词部分是否符合吃下的文字,如果符合就不会再吐出了
replaceAll会将符合规则表示式的字符串取代后返回新字符串
\b可以用来标出边界 边界比较用来表示文字必须符合指定的边界条件,也就是定位点,也可以称为锚点(Anchor) 可以使用()来将规则表示式分组,同时可以搭配量词使用15.3.2Pattern与Matcher
必须通过Pattern的静态方法compile来取得Pattern实例
取得Pattern实例后,可以使用split()方法将指定字符串进行切割,效果与String的split()方法相似,Matcher也有replaceAll()方法,与String的replaceAll()方法相似15.4JDK8API新增功能
15.4.1StringJoiner Arrarys
string的join方法可以用来连接字符串,Arrays类也新增了一些重载的方法
15.4.2Stream
stream的range方法可以产生一个整数范围,java.util.Random类可以用来产生随机数
教材学习中的问题和解决过程
课后选择题ch15:B AB ABC D A
代码调试中的问题和解决过程
其他(感悟、思考等,可选)
本周主要是学习一些通用的API、国际化的一些知识,再有就是规则表达式以及jdk8新增的一些功能,说到底这几周都是围绕java常用的一些类与接口、方法的使用进行的,自己还是应该对这些类的使用在实际的例子中多多尝试,才能真正掌握这些类使用的细节以及它们各自的作用。
学习进度条
代码行数(新增/累积 | 博客量(累积/目标) | 学习时间 | 估算学习时间 | 实际学习时间 | 重要成长 | |
目标 | 5000行 | 30篇 | 400小时 | |||
第一周 | 150/150 | 2/2 | 15 | |||
第二周 | 500/650 | 3/4 | 15 | |||
第三周 | 500/1150 | 4/5 | 14 | |||
第四周 | 600/1750 | 5/6 | 15 | |||
第五周 | 500/2250 | 6/7 | 9 | 这周学得不咋样...... | ||
第六周 | 300/2350 | 7/8 | 10 | 学得还是不实,但是比上周好了一些 | ||
第七周 |
300/2650 这周写了300行左右的代码(包括实验), 有些代码是直接粘贴运行了一下看了下结果 |
10/10 |
8h~9h |
10h |
8h~9h |
这周的学习内容主要是时间、日期相关类的应用, 相对于前面几章简单了一些, 实际学习时间相比于估算学习时间少了一些, 看书所花的时间与估算差不多, 但是写代码、调试、进行实际操作应用, 学习java实验相关调试技巧、测试技巧的时间还是少了些,还是有点懒。 |
第八周 |
400/3050 |
12/12 |
8h |
9h |
8h |
java后面都是类的使用,不实际操作肯定是不许的,动手还是少了些, 纸上得来终觉浅,应该积极主动地去多敲代码 |