20145127《java程序设计》第七周学习总结
一、教材学习内容总结
第十二章 Lambda
1.认识Lambda语法
Lambda 教材的引入循序渐近、深入浅出
Arrays.sort
Comparator: 对比C语言中使用函数指针
匿名类与多态
方法引用
新语法
一条语句用Lambda表达式,多条语句用方法引用
函数接口(Functional Interface)
就是只有一个抽象方法的接口
@FunctionalInterface
可引用的包括类的静态方法、成员方法、构造方法
接口默认方法(Default Method)
不能使用类的成员变量
2.Functional与Stream API
使用Optional代替null
标准API的函数接口
Consumer:一个参数,无返回值
Function:一个参数,有返回值
Predicate:一个参数,有返回值,返回值必须是boolean类型的
Supplier:无参数,有返回值
Stream与管道
3.Lambda与并行处理
第十三章 时间与日期
1.认识时间与日期
时间的度量
GMT(Greenwich Mean Time)时间:现在不是标准时间
世界时(Universal Time,UT):1972年UTC出来之前,UT等价于GMT
国际原子时(TAI):秒的定义
世界协调时间(Corrdinated Universal Time, UTC): 闰秒
Unix时间: 1970.1.1 00:00:00开始的秒数
epoch: java.util.Date epoch毫秒数
日历
儒略历(Julian Calendar)
格里高利历(Gregorian Calendar)
ISO8601 标准
2.认识Date与Calendar
时区
Date与DateFormat
Date只用来获取epoch毫秒数
DateFormat来格式化成人类理解的年月日时分秒
Calendar: 时间的运算
getInstance(): GregorianCalendar
getTime()
get()
add()
roll()
after()
before()
3.JDK8新时间日期API
机器时间 Instant
人类时间(ISO8601 标准)
LocalDateTime
LocalDate
LocalTime
ZonedDateTime
OffsetdateTime
Year
YearMonth
Month
MonthDay
TemporalAmount
TemporalUnit
TemporalAccessor
Chronology
二、教材学习中的问题和解决过程
本周的学习内容说实话有点多,光是看书并不能都看懂弄会,但是书本上的只是我都认真的学习了,收获很多,就是不知道以后能用到多少了。
三、代码调试中的问题和解决过程
StringOrder.java StringOrderDemo.java: 方法引用
新语法:byLength方法
byLength方法的签署与Comparator的compare()方法相同。
ThisDemo.java: 再理解this
this的参考对象以及toString()的接受者,实际上都是匿名类建立的实例。
ThisDemo2.java: Lambda版
执行结果会是显示两次“Hello, World!”。Lambda表达式中this的参考对象以及toString()的接受者,是来自Lambda的周围环境。
PlayerDemo.java: Stream API
Stream的直接父接口为BaseStream,而BaseStream还有DoubleStream、IntStream与LongStream这三个用于基本类型操作的子接口。
Stream只能迭代一次,重复迭代会引发IllegalStateException。
四、其他(感悟、思考等)
连续几周,需要学习的内容比较多,感觉有点吃紧还有一部分知识点掌握的不好,看来需要再接再厉了。
五、参考资料
Java学习笔记(第8版)
《Java学习笔记(第8版)》学习指导