zoukankan      html  css  js  c++  java
  • 20155216 2016-2017-2 《Java程序设计》第七周学习总结

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

    教材学习内容总结

    认识Lambda表达式语法

    Lambda表达式不需要也不允许使用throws关键字来声明可能产生并需要向上抛出的异常。
    Lambda为的就是表示一种行为,趋向于纯函数,因此一般情况下是不需要使用标识加以区分的。
    Lambda不从父类型中继承任何名字,包括:
    接口的静态final字段
    接口的静态嵌套类
    默认方法

    Lambda参数与表达式体中的局部声明可以屏蔽字段名。
    Lambda中的this和super的含义完全同外部一致。

    了解方法引用

    1、强引用
    当我们使用new 这个关键字创建对象时被创建的对象就是强引用,如Object object = new Object() 这个Object()就是一个强引用了,如果一个对象具有强引用。垃圾回收器就不会去回收有强引用的对象。如当jvm内存不足时,具备强引用的对象,虚拟机宁可会报内存空间不足的异常来终止程序,也不会靠垃圾回收器去回收该对象来解决内存。
    2、软引用
    如果一个对象具备软引用,如果内存空间足够,那么垃圾回收器就不会回收它,如果内存空间不足了,就会回收该对象。当然没有被回收之前,该对象依然可以被程序调用。
    3、弱引用
    如果一个对象只具有弱引用,只要垃圾回收器在自己的内存空间中线程检测到了,就会立即被回收,对应内存也会被释放掉。相比软引用弱引用的生命周期要比软引用短很多。不过,如果垃圾回收器是一个优先级很低的线程,也不一定会很快就会释放掉软引用的内存。
    4、虚引用
    如果一个对象只具有虚引用,那么它就和没有任何引用一样,随时会被jvm当作垃圾进行回收。

    Stream API

    stream()方法用于把一个集合变成Stream,然后,通过filter()、map()等实现Stream的变换。Stream还有一个forEach()来完成每个元素的迭代。
    当使用stream的时候,需要关注3个阶段:
    1.创建一个stream
    2.指定的中间操作将初始stream转化为其他stream
    3.最终的操作会产生一个结果,在调用最终操作前都会延迟执行的。在这之后,stream不会再被使用。

    Date与Calendar

    1、使用Date类代表当前系统时
    Date d = new Date();
    System.out.println(d);
    使用Date类的默认构造方法创建出的对象就代表当前时间,由于Date类覆盖了toString方法,所以可以直接输出Date类型的对象,显示的结果如下:
    Sun Mar 08 16:35:58 CST 2009
    在该格式中,Sun代表Sunday(周日),Mar代表March(三月),08代表8号,CST代表China Standard Time(中国标准时间,也就是北京时间(东八区))。
    2、使用Date类代表指定的时间
    Date d1 = new Date(2009-1900,3-1,9);
    System.out.println(d1);
    使用带参数的构造方法,可以构造指定日期的Date类对象,Date类中年份的参数应该是实际需要代表的年份减去1900,实际需要代表的月份减去1以后的值。例如上面的示例代码代表就是2009年3月9号。
    实际代表具体的年月日时分秒的日期对象,和这个类似。

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

    • 问题1:
      stream与集合很相似,其中有什么不同。

    • 问题1解决方案:
      stream与集合的不同点:
      1.stream不存储集合元素
      2.stream操作不修改源数据,他们是返回一个新的streams来承载结果
      3.stream操作都会尽可能的进行延迟加载。这意味着当需要使用结果的时候它才会才运行。

    • 问题2:
      对于YearsMonthDate等设置使用不够明确

    • 问题2解决方案:
      year - 用于设置 YEAR 时间域的值。
      month - 用于设置 MONTyear - 用于设置 YEAR 时间域的值。
      month - 用于设置 MONTH 时间域的值。 Month 值以 0 开始。 例如,0 代表一月。
      date - 用于设置 DATE 时间域的值。
      hour - 用于设置 HOUR 时间域的值。
      minute - 用于设置 MINUTE 时间域的值。
      second - 用于设置 SECOND 时间域的值。 H 时间域的值。 Month 值以 0 开始。 例如,0 代表一月。
      date - 用于设置 DATE 时间域的值。

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

    • 问题1:

    • 问题1解决方案:
      未解决

    • 问题2:

    • 问题2解决方案:
      未解决

    代码托管

    上周考试错题总结

    • 错题1及原因,理解情况
      下面代码中共有()个线程?
    public class ThreadTest {
        public static void main(String args[]){
            MyThread myThread =new MyThread();
            Thread t1=new Thread(myThread);
            Thread t2=new Thread(myThread);
            t1.start();
            t2.start();
        }
    }
    class MyThread extends Thread {
        ...
    }
    

    共有3个线程,主线程算其中一个。

    • 错题2及原因,理解情况
      调用线程的interrupt()方法 ,会抛出InterruptedException、SecurityException异常对象。

    • 错题3及原因,理解情况
      What is the result of executing the following code? (Choose all that apply.)
      String line;
      Console c = System.console();
      Writer w = c.writer();
      if ((line = c.readLine()) != null)
      w.append(line);
      w.flush();

    The code prints what was entered by the user.
    A NullPointerException might be thrown.
    An IOException might be thrown.

    结对及互评

    评分标准

    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

    • 参考示例

    点评过的同学博客和代码

    • 本周结对学习情况

      • 20155238
      • 结对学习内容
        • 1、通过课本内容学习Lambda表达式语法。
        • 2、了解Stream API的使用。
        • 3、学习Date与Calendar以及JDK新的时间日期API。
    • 上周博客互评情况

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

    1、了解了java编写关于日期与时间程序的方便性。
    2、了解了java方法的引用。

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第一周 6/6 1/4 20/20
    第二周 334/340 1/5 18/38
    第三周 570/900 1/6 22/60
    第四周 544/1358 1/7 30/90
    第五周 731/2089 1/8 30/90 了解了java中的架构,排序,以及异常处理
    第七周 541/3558 1/9 30/90 了解了JDK8新的时间日期API

    尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
    耗时估计的公式
    :Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。

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

    • 计划学习时间:20小时

    • 实际学习时间:25小时

    • 改进情况:

    (有空多看看现代软件工程 课件
    软件工程师能力自我评价表
    )

    参考资料

  • 相关阅读:
    Object.prototype的原型对象 格式化日期【js笔记】
    数组中去掉重复的 【js笔记】
    按照内容多少,每行自动按照内容较多的div设置其他div的高度【jq笔记】
    动态操作表格 【js笔记】
    关于记录任意选择行删除或者其他的操作【jq笔记】
    Good studying and day day up
    第三周星期一
    第二周星期天
    第二周星期六
    第二周星期五
  • 原文地址:https://www.cnblogs.com/LeeX1997/p/6682932.html
Copyright © 2011-2022 走看看