您的位置:首页 > 编程语言 > Java开发

20155236 2016-2017-2 《Java程序设计》第八周学习总结

2017-04-15 14:39 369 查看

20155236 2016-2017-2 《Java程序设计》第八周学习总结

教材学习内容总结

通用API

日志

1.日志API简介:
java.util.logging
包中提供了日志功能相关类与接口,使用日志的起点是Logger类;

2.
Logger
类的构造函数标示为
protected
,不是
java.util.logging
,同包的类不能直接以new创建,要取得
Logger
实例,必须使用
Logger
的静态方法
getLogger
();

3.调用
getLogger
()时,必须指定
Logger
实例所属名称空间,名称空间以
‘.’
作为层级区分,名称空间层级相同的
Logger
,其父
Logger
组态相同;

代码如下:

package cc.openhome;   import java.util.logging.*;   public class LoggerDemo{ public static void main(String[] args){     Logger logger = Logger.getLogger(LoggerDemo.class.getName());     logger.log(Level.WARNING,"WARNING 信息");     logger.log(Level.INFO,"INFO 信息");     logger.log(Level.CONFIG,"CONFIG 信息");     logger.log(Level.FINE,"FINE 信息"); }   }


4.在没有任何组态设定的情况下,默认取得的Logger实例,层级必须大于或等于Logger.GLOBAL-LOGGER-NAME名称空间logger实例设定的Level.INFO,才可能输出信息。

代码如下:

package cc.openhome;    import java.util.logging.*;    public class LoggerDemo2{ public static void main(String[] args){     Logger logger = Logger.getLogger(LoggerDemo2.class.getName());     logger.setLevel(Level.FINE);     for(Handler handler : logger.getParent().getHandlers()){         handler.setLevel(Level.FINE);     }     logger.log(Level.WARNING,"WARNING 信息");     logger.log(Level.INFO,"INFO 信息");     logger.log(Level.CONFIG,"CONFIG 信息");     logger.log(Level.FINE,"FINE 信息"); }    }


5.标准API提供了几个操作类:其中
MemoryHandler
不会格式化日志信息,信息会暂存于内存缓冲区,直至超过大小才将信息输出至指定的目标
Handler
StreamHandler
可自行指定信息输出时使用的
OutputStream
ConsoleHandler
创建时,会自动指定
OutputStream
System.err。SocketHandler
创建时可以指定主机位置与端口。

API增强功能

1.在JDK8中,
String
新增了
join()
静态方法可以直接指定每个字符串间以逗号分隔进行连接。

2.JDK8中,针对大型数组的平行化操作,在Arrays上新增了
parallelPrefix()
parallelSetAll()
parallelSort()
方法,
parallelSort()
方法。

3.
parallelPrefix()
方法,可以指定
×××BinaryOperator
实例。

4.
parallelSetAll()
方法,可以用来对数组进行初始化或者全面重设每个索引元素。

5.
parallelSort()
方法,可以将指定的数组分为子数组并以平行化方式分别排序,然后再进行合并排序。

6.
Stream
是JDK8中重要的新特性之一。
Files
上有几个静态方法,例如
lines()
list()
walk()
等方法,对于这类返回
Stream
实例的API,主要可适用于需要管线化、惰性操作的场合。

7.如果想对数组进行管线化操作,方法之一是使用
Arrays
asList()
方法返回
List
,而后调用
stream()
方法取得Stream实例,另一个方法是使用
Arrays
stream()
方法,它可以指定数组后返回
Stream
实例。

教材学习中的问题和解决过程

p471
LoggerDemo
为什么不会输出
Level.CONFIG
Level.FINE
的信息?

Logger
的层级必须大于等于父
Logger
,才能将信息输出至控制台,
Logger
层级默认为
INFO
Level.CONFIG
Level.FINE
都小于
INFO
,所以不会输出

对数组进行管道化操作的方式有哪些?

方法之一是使用
Arrays
asList()
方法返回
List
,而后调用
stream()
方法取得
Stream
实例。另一个方式是使用
Arrays
stream()
方法,它可以指定数组后返回
Stream
实例。

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

java.util.regex.Pattern
实例是规则表示式在JVM中的代表对象,
Pattern
的构造函数被标示为
private
,所以你无法用
new
创建
Pattern
实例,而必须通过
Pattern
的静态方法
compile()
来取得。



代码托管



上周考试错题总结

-b
是以八进制输出。

JDK8中新时间API中,用于度量时间的类:
Duuration
Period


UML类图有助于我们查看程序中类的内容和他们之间的关系。

当应用到实例变量时,private可见性修饰符强制执行封装。

结对及互评

学习内容

MemoryHandler
不会格式化日志信息,信息会暂存于内存缓冲区,直至超过大小才将信息输出至指定的目标
Handler


StreamHandler
可自行指定信息输出时使用的
OutputStream
实例,它与子类都会使用指定的
Formatter
格式化信息。

ConsoleHandler
创建时,会自动指定
OutputStream
System.err
,所以日志信息会显示在控制台。

FileHandler
创建时会建立日志输出时使用的
FileOutputStream
,文档位置与名称可以使用模式字符串指定。

SocketHandler
创建时可以指定主机位置与端口,内部将自动建立网络联机,将日志信息传送至指定的主机。

Logger
可以使用
addHandler()
新增Handler实例,使用
removeHandler()
移除
Handler


结对照片

点评过的同学博客和代码

20155205

20155211

20155226

20155212

20155305

其他(感悟、思考等,可选)

java的核心知识与难点之前都已经学完了,后面的章节全都是介绍一些类的应用。看第一遍教材的时候肯定觉得陌生,难以接受。这是个过程,很正常。

之前娄老师说过,java的核心内容是封装、继承、多态那部分知识,确实比较抽象难懂。之后的内容都是介绍各种API的应用,都是活生生的例子,比较具体,如果觉得难那是因为对这部分知识感到陌生,不熟悉。自己首先理清头绪,不懂的基础知识多看几遍书,然后再多敲几遍代码,仔细思考总结,将代码与知识点结合,感觉立马就上来了!要讲究科学的学习方法~不要盲目!!!。

学习进度条

代码行数(新增/累积)博客量(新增/累积)学习时间(新增/累积)重要成长
目标5000行30篇400小时
第一周10/101/110/10
第二周100/1002/219/25
第三周200/2781/310/26
第四周660/9381/410/36
第五周1100/21001/518/54
第六周740/28401/623/77
第七周352/31922/820/97
第八周631/38051/920/117
计划学习时间:30小时

实际学习时间:20小时

改进情况:自己动手敲了比平时要多的代码,意识到了自主学习的重要性。

参考资料

无0.0
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: