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

教材学习内容总结

第十二章

  • lambda语法:Lambda去重复,回忆DRY原则,Lambda表达式可读性更好

  • Arrays.sort

    • Comparator: 对比C语言中使用函数指针
    • 匿名类与多态
  • 在Java中引入Lambda的同时,与现有API维持兼容性是主要考虑之一。

  • 方法引用(Method Reference) 一条语句用Lambda表达式,多条语句用方法引用

  • 函数接口(Functional Interface)

    • 就是只有一个抽象方法的接口:Runnable、Callable、Comparator
    • @FunctionalInterface
    • 可引用的包括类的静态方法、成员方法、构造方法
  • 接口默认方法(Default Method):不能使用类的成员变量

  • 使用Optional代替null

  • 标准API的函数接口

    • Consumer:一个参数,无返回值
    • Function:一个参数,有返回值
    • Predicate:一个参数,有返回值,返回值- 必须是boolean类型的
    • Supplier:无参数,有返回值
  • Stream与管道

  • Lambda与并行处理

第十三章

  • 时间的度量,年历简介。
  • 想要取得系统时间,方法之一是使用System.currentTimeMillis()方法,返回的是long类型整数。

    P429
import java.util.*;
import static java.lang.System.*; public class datedemo {
public static void main(String[] args) {
Date date1 = new Date(currentTimeMillis());
Date date2 = new Date(); out.println(date1.getTime());
out.println(date2.getTime());
}
}

运行结果

  • 有关字符串时间格式的处理,职责落在了Java.text.DateFormat身上。
import java.util.*;
import static java.lang.System.out;
import static java.text.DateFormat.*; public class DateFormatDemo {
public static void main(String[] args) {
Date date = new Date();
dateInstanceDemo(date);
timeInstanceDemo(date);
dateTimeInstanceDemo(date);
} static void dateInstanceDemo(Date date) {
out.println("getDateInstance() demo");
out.printf("\tSHORT: %s%n", getDateInstance(LONG).format(date));
out.printf("\tSHORT: %s%n", getDateInstance(SHORT).format(date));
} static void timeInstanceDemo(Date date) {
out.println("getTimeInstance() demo");
out.printf("\tLONG: %s%n", getTimeInstance(LONG).format(date));
out.printf("\tMEDIUM: %s%n", getTimeInstance(MEDIUM).format(date));
out.printf("\tSHORT: %s%n",getTimeInstance(SHORT).format(date));
} static void dateTimeInstanceDemo(Date date) {
out.println("getDateTimeInstance() demo");
out.printf("\tLONG: %s%n",
getDateTimeInstance(LONG, LONG).format(date));
out.printf("\tMEDIUM: %s%n",
getDateTimeInstance(SHORT, MEDIUM).format(date));
out.printf("\tSHORT: %s%n",
getDateTimeInstance(SHORT, SHORT).format(date));
}
}

运行截图

  • 处理时间日期的Calendar
  • 使用Java.util.TimeZone的getDefault()来取得默认时区信息。取得指定时区的TimeZone实例,可以取得ID字符串。
  • 机器时间观念的API和人类时间观念的API
  • 对时间的运算。

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

第十二章

  • 问题1:Lambda语法的优势在哪里?
  • 问题1解决方案:取得语法的简洁,增加代码程序的表达性,引入更简单的表达式和局部变量的定义规则,定义更灵活更友善的语法,这里只是回避,类加载和实例化本身不可避免,允许用户使用最终有效的局部变量。

第十三章

  • 问题2:Java8与以前相比在时间处理上做了哪些改进?
  • 问题2解决方案:Java 的日期与时间 API 问题由来已久,Java 8 之前的版本中关于时间、日期及其他时间日期格式化类由于线程安全、重量级、序列化成本高等问题而饱受批评。Java 8 吸收了 Joda-Time 的精华,以一个新的开始为 Java 创建优秀的 API。新的 java.time 中包含了所有关于时钟(Clock),本地日期(LocalDate)、本地时间(LocalTime)、本地日期时间(LocalDateTime)、时区(ZonedDateTime)和持续时间(Duration)的类。历史悠久的 Date 类新增了 toInstant() 方法,用于把 Date 转换成新的表示形式。这些新增的本地化时间日期 API 大大简化了了日期时间和本地化的管理。

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

  • 问题1:我在运行第十三章的程序时出现了编译错误:

  • 问题1解决方案:我在网上找到了这个,Java命令行编译文件时出现的错误,找不到符号或软件包不存在等

  • 问题2:在编译Timezone程序时报错如下:

  • 问题2解决方案:我发现我文件名打错了,然后还有一个地方多打了一行重复的内容,修改之后就编译成功了。运行结果如下:

代码托管

上周考试错题总结

  • 1.下面哪条命令可以把 f1.txt 复制为 f2.txt ?:

    A. cp f1.txt f2.txt

    B .

    copy f1.txt f2.txt

    C .

    cat f1.txt > f2.tx

    D .

    cp f1.txt | f2.tx

    E .

    copy f1.txt | f2.tx

    答案:AC

我只选择了A。copy是Windows下的命令。cat f1.txt > f2.tx 通过输出重定向实现了复制。

  • 7.调用线程的interrupt()方法 ,会抛出()异常对象?

    A .

    IOException

    B .

    IllegalStateException

    C .

    RuntimeException

    D .

    InterruptedException

    E .

    SecurityException

    答案:DE

我只选择了D,SecurityException检测到安全错误时引发的异常。

  • 10.Given an instance of a Stream, s, and a Collection, c, which are valid ways of creating a parallel stream? (Choose all that apply.)

    给定一个Stream的实例s, 一个Collection的实例c, 下面哪些选项可以创建一个并行流?

    A .

    new ParallelStream(s)

    B .

    c.parallel()

    C .

    s.parallelStream()

    D .

    c.parallelStream()

    E .

    new ParallelStream(c)

    F .

    s.parallel()

    答案:DF

    我选了AB

  • Which of the following statements about the Callable call() and Runnable run() methods are correct? (Choose all that apply.)

    A .

    Both can throw unchecked exceptions.

    B .

    Callable takes a generic method argument.

    C .

    Callable can throw a checked exception.

    D .

    Both can be implemented with lambda expressions.

    E .

    Runnable returns a generic type.

    F .

    Callable returns a generic type.

    G .

    Both methods return void

    答案:ACDF

    我的答案是CF,显然我对题目的理解不够,还需要更深入地学习

  • 14.Which of the following are not java.io classes? (Choose all that apply.)

    答案是PrintWriter

    因为PrintWriter是唯一Writer类,没有互补reader类,E是正确的。

  • Which of the following are built-in streams in Java? (Choose all that apply.)

    A .System.err

B .System.error

C .System.in

D .System.input

E .System.out

F .System.output

答案:ACE

The System class has three streams: in is for input, err is for error, and out is for output. Therefore A, C, and E are correct. The others do not exist.

结对及互评

评分标准

  1. 正确使用Markdown语法(加1分):

    • 不使用Markdown不加分
    • 有语法错误的不加分(链接打不开,表格不对,列表不正确...)
    • 排版混乱的不加分
  2. 模板中的要素齐全(加1分)

    • 缺少“教材学习中的问题和解决过程”的不加分
    • 缺少“代码调试中的问题和解决过程”的不加分
    • 代码托管不能打开的不加分
    • 缺少“结对及互评”的不能打开的不加分
    • 缺少“上周考试错题总结”的不能加分
    • 缺少“进度条”的不能加分
    • 缺少“参考资料”的不能加分
  3. 教材学习中的问题和解决过程, 一个问题加1分

  4. 代码调试中的问题和解决过程, 一个问题加1分

  5. 本周有效代码超过300分行的(加2分)

    • 一周提交次数少于20次的不加分
  6. 其他加分:

    • 周五前发博客的加1分
    • 感想,体会不假大空的加1分
    • 排版精美的加一分
    • 进度条中记录学习时间与改进情况的加1分
    • 有动手写新代码的加1分
    • 课后选择题有验证的加1分
    • 代码Commit Message规范的加1分
    • 错题学习深入的加1分
    • 点评认真,能指出博客和代码中的问题的加1分
    • 结对学习情况真实可信的加1分
  7. 扣分:

    • 有抄袭的扣至0分
    • 代码作弊的扣至0分
    • 迟交作业的扣至0分

点评模板:

  • 博客中值得学习的或问题:

    • xxx
    • xxx
    • ...
  • 代码中值得学习的或问题:

    • xxx
    • xxx
    • ...
  • 基于评分标准,我给本博客打分:XX分。得分情况如下:xxx

  • 参考示例

点评过的同学博客和代码

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

这周的学习状态感觉比之前要好一些,另一方面这周的学习内容也相对简单一些。然后这周的测试,我只有九分,虽然这九分还排了个第六名,但是我知道我还要很多的不足需要努力,希望我能再接再励继续进步。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第四周 300/500 2/4 18/38
第五周 515/1396 3/7 22/30
第六周 845/2012 1/9 24/30
第七周 734/2746 2/11 27/28

尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。

耗时估计的公式

:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。

参考:软件工程软件的估计为什么这么难软件工程 估计方法

  • 计划学习时间:28小时

  • 实际学习时间:27小时

  • 改进情况:这周的学习状态感觉比之前要好一些,花的时间更长了一些。

(有空多看看现代软件工程 课件

软件工程师能力自我评价表
)

参考资料

20155215 2016-2017-2 《Java程序设计》第7周学习总结的更多相关文章

  1. 20155306 2016-2017-2 《Java程序设计》第九周学习总结

    20155306 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 整合数据库 16.1 JDBC入门 Java语言访问数据库的一种规范,是一套API ...

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

    20155236 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 JDBC入门 1.JDBC简介 JDBC是用于执行SQL的解决方案,开发人员使用JDBC的标 ...

  3. 20145213《Java程序设计》第九周学习总结

    20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...

  4. 20145213《Java程序设计》第二周学习总结

    20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...

  5. 20145213《Java程序设计》第一周学习总结

    20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...

  6. 21045308刘昊阳 《Java程序设计》第九周学习总结

    21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...

  7. 20145330孙文馨 《Java程序设计》第一周学习总结

    20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...

  8. 20145337 《Java程序设计》第九周学习总结

    20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...

  9. 20145337 《Java程序设计》第二周学习总结

    20145337 <Java程序设计>第二周学习总结 教材学习内容总结 Java可分基本类型与类类型: 基本类型分整数(short.int.long).字节(byte).浮点数(float ...

  10. 20145218《Java程序设计》第一周学习总结

    20145218 <Java程序设计>第一周学习总结 教材学习内容总结 今天下午看了Java学习的视频,感觉很是新奇,之前觉得Java学起来是艰难枯燥的,但通过第一章的学习觉得如果自己可以 ...

随机推荐

  1. 普通程序员看k8s的账户管理

    一.知识准备 ● 账户管理分为:userAccount与serviceAccount ● userAccount:通常是给人设计使用的,并且userAccount不在k8s集群内管理 ● servic ...

  2. 实验吧ctf题库web题wp

    经历了学校的校赛,一度自闭,被大佬们刺激的要奋发图强. 1.后台登录 链接: http://ctf5.shiyanbar.com/web/houtai/ffifdyop.php 打开题目首先查看源码, ...

  3. 软件项目第一次sprint评分表

  4. ”数学口袋精灵“第二个Sprint计划---第二天

    “数学口袋精灵”第二个Sprint计划----第二天进度 任务分配: 冯美欣:欢迎界面的音效 吴舒婷:游戏界面的动作条,选择答案后的音效 林欢雯:完善算法代码的设计 进度:   冯美欣:找到了几个音乐 ...

  5. Visual Studio的安装应用及单元测试

    新建项目—Visual C#—类库 一.Visual Studio的安装 这可能是自己安装软件用的的最长时间的一次 ..刚下载完安装的时候灰常的尴尬,因为2013版本和2015的版本都是不支持在win ...

  6. ElasticSearch 2 (20) - 语言处理系列之如何开始

    ElasticSearch 2 (20) - 语言处理系列之如何开始 摘要 Elasticsearch 配备了一组语言分析器,为世界上大多数常见的语言提供良好的现成基础支持. 阿拉伯语.亚美尼亚语,巴 ...

  7. Android 图表

    今天在群里有人提问Android的图表,在网上搜索了一下,在贴吧中看到的回答,说是Trinea整理的开源项目,不知道是不是博客上的Trinea. 将内容记录如下,以备需要时查看. GraphView ...

  8. css 鼠标移上去会变大

    <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>& ...

  9. 【bzoj5073】[Lydsy1710月赛]小A的咒语 后缀数组+倍增RMQ+贪心+dp

    题目描述 给出 $A$ 串和 $B$ 串,从 $A$ 串中选出至多 $x$ 个互不重合的段,使得它们按照原顺序拼接后能够得到 $B$ 串.求是否可行.多组数据. $T\le 10$ ,$|A|,|B| ...

  10. 10缓冲流、转换流、序列化流、Files

    十.流 10.1 缓冲流 10.1.1 概述                 缓冲流是对4个基本的FileXxx流的增强,所以也是4个流,按照数据类型进行分类                     ...