20145120 《Java程序设计》第7周学习总结
教材学习内容总结
Lambda表达式
例:Comparator<String> byLength = (name1, name2) -> name1.length() - name2.length();
等号右边是Lambda表达式,左边是其目标类型
Lambda不建议用多行描述
Lambda中即使不接受任何参数也必须写括号
在只有Lambda表达式的情况下,参数的类型必须写出来。
@FunctionalInterface标注,本身不是函数接口则会引发错误
方法参考,例:Comparator<String> byLength = StringOther::bylength;
可以避免到处写Lambda表达式
使用Optional取代null。在方法中可能返回null,必须检查返回是否为null,并在返回null时使用默认值
JDK8定义的通用函数接口,基本上放置于java.util.function套件之中,就行为来说,基本上可以分为consumer,function,predicate,supplier四个类型
一个管道基本包括以下部分
·来源
·零或多个中间操作
·一个最终操作
截图:
(应为都是39不太看得出效果所以我调了一下,把最后一个改成了27岁、男,不是代码敲错了)
(把过滤的条件改成了女)
时间和日期
使用System,currentTimeMillis()方法可以取得系统时间,返回的是long类型整数。
date偏向机器时间,可以用getTime()取得其内部的epoch毫秒数值
java.text.DateFormat可进行字符串时间格式处理,其操作类java.text.SimpleDateFormat
可直接构建SimpleDateFormat实例,能使用模式字符自定义格式,其中parse()方法可将指定字符串剖析成Date实例
也可使用DateFormat的各种方法
格式化时间日期用DateFormat,取得某个时间日期并操作用Calender(操作儒略历和格里高利历的混合历),Calender的月份列举是从0开始的
add()用来改变Calender的时间,只针对某个字段的加减用roll(),比价Calender的先后用after()/before()
用java.unil.TimeZone的getDefault()取得默认的时区信息
人类时间:LocalDateTime(包括日期与时间),LocalDate(只有日期),LocalTime(只有时间)
取得代表月份的数字不要用oridinal()要用getValue()
截图:
图1
图2
教材学习中的问题和解决过程
1.参考图1,不知道为什么显示在上海,不是北京吗?时区也是北京没错
2.参考图2,之前输1975-5-23没事,我以为parse能这样用,后面发现其实不是的
代码调试中的问题和解决过程
抄代码,基本没有
本周代码托管截图
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 1000行 | 16篇 | 300小时 | |
第一周 | 20/20 | 1/1 | 8/8 | |
第二周 | 71/91 | 1/2 | 9/17 | |
第三周 | 229/320 | 1/3 | 13/30 | |
第四周 | 280/600 | 1/4 | 16/46 | |
第五周 | 500/1100 | 1/5 | 18/64 | |
第六周 | 200/1300 | 2/7 | 12/76 | |
第七周 | 300/1600 | 2/9 | 14/90 |