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. Codejam Qualification Round 2019

    本渣清明节 闲里偷忙 做了一下codejam 水平不出意外的在投稿之后一落千丈 后两题的hidden test竟然都挂了 A. Foregone Solution 水题,稍微判断一下特殊情况(比如10 ...

  2. sqli-labs 下载、安装

    sqli-labs 下载.安装 下载地址:https://github.com/Audi-1/sqli-labs phpstudy:http://down.php.cn/PhpStudy2018021 ...

  3. PAT甲题题解1098. Insertion or Heap Sort (25)-(插入排序和堆排序)

    题目就是给两个序列,第一个是排序前的,第二个是排序中的,判断它是采用插入排序还是堆排序,并且输出下一次操作后的序列. 插入排序的特点就是,前面是从小到大排列的,后面就与原序列相同. 堆排序的特点就是, ...

  4. Scrum Meeting day 2

              第二次会议,开发人员会议 .  •    前端: 1. 登陆界面,login, sign up, 添加加载时的图片. 2. 主界面:采用类微信类型.应含有联系人.群聊.设置 3. ...

  5. linux第三章学习笔记

    第三章 进程管理 进程是Unix操作系统抽象概念中最基本的一种. 进程管理是所有操作系统的心脏所在. 一.进程 1. 进程是处于执行期的程序.除了可执行程序代码,还包括打开的文件.挂起的信号.内核内部 ...

  6. 《Linux内核分析》 第五节 扒开系统调用的三层皮(下)

    <Linux内核分析> 第五节 扒开系统调用的三层皮(下) 20135307 一.给MenusOS增加time和time-asm命令 给MenuOS增加time和time-asm命令需要 ...

  7. 小学四则运算APP 第一个冲刺阶段 第四天

    团队成员:陈淑筠.杨家安.陈曦 团队选题:小学四则运算APP 第一次冲刺阶段时间:11.17~11.27 本次发布我们增加了CalculatorsActivity.java.YunsuanActivi ...

  8. extjs几个奇怪的错误

    在用Extjs进行网页开发的时候,遇见了一下两个错误,这两个错误的位置用firebug调试显示在extjs-all.js Ext.resetElement is undefined g.el is n ...

  9. ElasticSearch 2 (11) - 节点调优(ElasticSearch性能)

    ElasticSearch 2 (11) - 节点调优(ElasticSearch性能) 摘要 一个ElasticSearch集群需要多少个节点很难用一种明确的方式回答,但是,我们可以将问题细化成一下 ...

  10. 【Leetcode】209. Minimum Size Subarray Sum

    Question: Given an array of n positive integers and a positive integer s, find the minimal length of ...