20155237 2016-2017-2 《Java程序设计》第7周学习总结
20155237 2016-2017-2 《Java程序设计》第7周学习总结
教材学习内容总结
认识Lambda语法
- Lambda 教材的引入循序渐近、深入浅出
- Lambda去重复,回忆DRY原则
- Lambda表达式可读性更好
- Arrays.sort
- Comparator: 对比C语言中使用函数指针
- 匿名类与多态
- 方法引用
- 新语法
- 一条语句用Lambda表达式,多条语句用方法引用
- 函数接口
- @FunctionalInterface
- 可引用的包括类的静态方法、成员方法、构造方法
- 接口默认方法
- 不能使用类的成员变量
Functional与Stream API
- 使用Optional代替null
- 标准API的函数接口
- Consumer:一个参数,无返回值
- Function:一个参数,有返回值
- Predicate:一个参数,有返回值,返回值必须是boolean类型的
- Supplier:无参数,有返回值
认识时间与日期
- 时间的度量
- 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毫秒数
认识Date与Calendar
- 时区
- Date与DateFormat
- Date只用来获取epoch毫秒数
- DateFormat来格式化成人类理解的年月日时分秒
- Calendar: 时间的运算
- 机器时间 Instant
教材学习中的问题和解决过程
- 问题1:add() 与 roll() 的区别
- 问题1解决方案:取得add()实例后,用add()方法改变Calender时间,相当于进位加减法,而roll()是对日期中某一字段进行加减,也就是不进位加减法。
- 问题2:ZonedDateTimeDemo.java程序运行结果中数字是什么意思?
- 问题2解决方案:通过自主敲代码验证发现是机器运行起止的毫秒数。
代码托管
上周考试错题总结
-
下面哪条命令可以把 f1.txt 复制为 f2.txt ?
A .
cp f1.txt f2.txtB .
copy f1.txt f2.txtC .
cat f1.txt > f2.txD .
cp f1.txt | f2.tx
E .
copy f1.txt | f2.tx
答案:AC -
调用线程的interrupt()方法 ,会抛出()异常对象?
A .
IOExceptionB .
IllegalStateExceptionC .
RuntimeExceptionD .
InterruptedExceptionE .
SecurityException
答案:DE
- 定义新线程时,可以继承哪个类:Thread
- 使线程进入阻塞状态:答案缺
interrupt()
- Which of the following are not java.io
classes? (Choose all that apply.)
A .BufferedReader
B .BufferedWriter
C .FileReader
D .FileWriter
E .PrintReader
F .PrintWriter
正确答案:E
- 给定一个Stream的实例s,一个Collection的实例c, 下面哪些选项可以创建一个并行流?
A .new ParallelStream(s)
B .c.parallel()
C .s.parallelStream()
D .c.parallelStream()
E .new ParallelStream(c)
F .s.parallel()
正确答案:D F
-
Assuming zoo-data.txt is a multiline text file, what is true of the following method?
private void echo() throws IOException {
try (FileReader fileReader = new FileReader("zoo-data.txt");
BufferedReader bufferedReader = new BufferedReader(fileReader)) {
System.out.println(bufferedReader.readLine());
}
}A .It prints the first line of the file to the console.
B .It prints the entire contents of the file.
C .The code does not compile because the reader is not closed.
D .The code does compile, but the reader is not closed.
E .The code does not compile for another reason.
答案:A
-
Which of the following are true? (Choose all that apply.)
A .A new Console object is created every time System.console() is called.
B .Console can only be used for reading input and not writing output.
C .Console is obtained using the singleton pattern.
D .When getting a Console object, it might be null.
E .When getting a Console object, it will never be null.
答案:CD
结对及互评
评分标准
-
正确使用Markdown语法(加1分):
- 不使用Markdown不加分
- 有语法错误的不加分(链接打不开,表格不对,列表不正确...)
- 排版混乱的不加分
-
模板中的要素齐全(加1分)
- 缺少“教材学习中的问题和解决过程”的不加分
- 缺少“代码调试中的问题和解决过程”的不加分
- 代码托管不能打开的不加分
- 缺少“结对及互评”的不能打开的不加分
- 缺少“上周考试错题总结”的不能加分
- 缺少“进度条”的不能加分
- 缺少“参考资料”的不能加分
-
教材学习中的问题和解决过程, 一个问题加1分
-
代码调试中的问题和解决过程, 一个问题加1分
-
本周有效代码超过300分行的(加2分)
- 一周提交次数少于20次的不加分
-
其他加分:
- 周五前发博客的加1分
- 感想,体会不假大空的加1分
- 排版精美的加一分
- 进度条中记录学习时间与改进情况的加1分
- 有动手写新代码的加1分
- 课后选择题有验证的加1分
- 代码Commit Message规范的加1分
- 错题学习深入的加1分
- 点评认真,能指出博客和代码中的问题的加1分
- 结对学习情况真实可信的加1分
-
扣分:
- 有抄袭的扣至0分
- 代码作弊的扣至0分
- 迟交作业的扣至0分
点评过的同学博客和代码
其他(感悟、思考等,可选)
这周的学习内容主要是时间和日期。还有就是对时间进行运算,最关键的就是善于利用API帮助文档,在需要的时候能够灵活地使用这些类。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | |
---|---|---|---|
目标 | 3000行 | 30篇 | 200小时 |
第一周 | 5/5 | 1/1 | 10/10 |
第二周 | 36/41 | 1/2 | 12/24 |
第三周 | 271/312 | 1/3 | 20/44 |
第四周 | 577/ | 1/4 | 25/69 |
第五周 | 520/889 | 1/5 | 25/94 |
第六周 | 884/1773 | 1/6 | 20/114 |
第七周 | 404/2177 | 2/8 | 10/124 |
参考:软件工程软件的估计为什么这么难,软件工程 估计方法(http://www.cnblogs.com/xinz/archive/2011/04/06/2007294.html)
参考资料
- [Java学习笔记(第8版)] (http://book.douban.com/subject/26371167/)
- [《Java学习笔记(第8版)》学习指导] (http://www.cnblogs.com/rocedu/p/5182332.html)