• 20145234黄斐《Java程序设计》第七周


    教材学习内容总结

    第十二章部分 - Lambda

    认识Lambda语法

    • Lambda去可以重复,符合DRY原则,而且Lambda表达式可读性更好,操作更简单
    • 匿名类型最大的问题就在于其冗余的语法,lambda表达式是匿名方法,它提供了轻量级的语法,从而解决了匿名内部类带来的冗余问题。
    • 示例:

      (int x, int y) -> x + y;
      () -> 42;
      (String s) -> { System.out.println(s); 

      第一个lambda表达式接收x和y这两个整形参数并返回它们的和;第二个lambda表达式不接收参数,返回整数'42';第三个lambda表达式接收一个字符串并把它打印到控制台,不返回值。

    • 接口默认方法:在JDK8中,interface定义时可以加入默认操作,或者称为默认方法(Default methods),forEach()方法本身已有操作,所以不会破坏Iterable现有的其他操作。在默认方法中不能使用数据成员,因为接口本身不能定义数据成员,也就是默认方法中不能用直接变更状态的流程。

    Functional与Stream API

    • 使用Optional代替null
    • 标准API的函数接口
      • Consumer:一个参数,无返回值
      • Function:一个参数,有返回值
      • Predicate:一个参数,有返回值,返回值必须是boolean类型的
      • Supplier:无参数,有返回值
    • Stream与管道

    Lambda与并行处理

    第十三章部分 - 时间与日期

    认识时间与日期

    • 时间的度量
      • 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毫秒数
    • 日历
      • 儒略历(Julian Calendar)
        儒略历是现今公历的前身,用来取代罗马历,修正了罗马历隔三年设置一闰年的错误,改采四年一闰。
      • 格里高利历(Gregorian Calendar)
        格里高利历将儒略历1582年10月4日星期四的隔天,订为格里高利历1582年10月15日星期五。
      • ISO8601 标准
        ISO 8601并非年历系统,而是时间日期表示方法的标准,用意统一时间日期的数据交换格式。在ISO 8601标准的定义中,19世纪是指1900年到1999年,而格里高利历的19世纪是指1801年到1900年。

    认识Date与Calendar

    • 时区:考虑了UTC偏移的时间表示上,通常会标识Z符号。
    • Date与DateFormat
      • Date:使用System.currentTimeMillis()方法,返回的是long类型的整数,代表1970年1月1日00:00:00至今经过的毫秒数,只用来获取epoch毫秒数。
      • DateFormat是个抽象类,其操作类是java.text.SimpleDateFormat,用来格式化成人类理解的年月日时分秒。
    • Calendar: 时间的运算
      • getInstance(): 要取得某个时间日期资讯,或者是对时间日期进行操作,可以使用Calendar实例,通过Calendar的getInstance()取得的Calendar实例,默认就是取得GregorianCalendar实例
      • getTime():取得Calendar实例后,可以使用getTime()取得Date实例
      • get():如果想要取得年月日等日期时间字段,可以使用get()方法指定Calender上的字段枚举常数
      • add():改变实例的时间
      • roll():如果打算只针对日期中某个字段加减,则可以使用roll()方法
      • after():比较两个实例的日期先后
      • before():比较两个实例的日期先后
      • ...

    JDK8新时间日期API

      • 机器时间 Instant
        • Calendar的getTime()返回false实例,取得Date实例,下一步应该获取时间信息,应该是通过Date的getTime()取得epoch毫秒数
        • 用以代表自定义的Java epoch之后的某个时间点历经的毫秒数,精确度基本上是毫秒。使用Instant的静态方法now()取得代表Java epoch毫秒数的Instant实例,取得Instant实例后,可以使用plusSeconds()、plusMillis()、plusNanos()、minusSeconds()、minusMillis()、minusNanos()来做时间轴上的运算,Instant实例本身不会变动,这些操作会返回新的Instant实例,代表运算后的瞬时
      • 人类时间(ISO8601 标准)
        • LocalDateTime:包括日期与时间
        • LocalDate:只有日期
        • LocalTime:只有时间
        • ZonedDateTime:时区的日期与时间
        • OffsetdateTime:代表UTC偏移量
        • Year:表示年
        • YearMonth:表示年月
        • Month:表示月
        • MonthDay:表示月日

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

    • 问题1:书上的ZoneDataTime代码会输出两行不是时间的数字,不清楚是什么。
    • 问题1解决方案:查阅资料知,是机器从始至今的毫秒时间Java中日期时间格式的小结
    • 问题2:当人类时间与机器时间冲突怎么办?
    • 问题2解决方案:使用LocalDateLocalTimeLocalDataTime来表示用户自行设定的时间。
    • 问题3UTC的闰秒修正具体是怎么进行的
    • 问题3解决方案:通过查找相关资料,发现是指为保持协调世界时接近于世界时时刻,由国际计量局统一规定在年底或年中(也可能在季末)对协调世界时增加或减少1秒的调整。闰秒一般加在公历年末或公历六月末

    代码托管

     

    上周考试错题解析

    评分 8

    1. 教材学习中的问题和解决过程, 一个问题加1分
    2. 本周有效代码超过300分行的(加2分)
    3. -排版精美的加一分
    4. -进度条中记录学习时间与改进情况的加1分
    5. -错题学习深入的加1分

    学习进度条

  • 相关阅读:
    Docker学习(二): 镜像的使用与构建
    Docker学习(一): 基本概念
    SVN笔记
    标准Trie字典树学习二:Java实现方式之一
    标准Trie字典树学习一:原理解析
    SQL优化
    企业信息管理系统需求分析及要设计——程序的设计与实现①
    企业信息管理系统需求分析及要设计
    网络版ATM项目的实现——服务端
    网络版ATM项目的实现——客户端
  • 原文地址:https://www.cnblogs.com/taigenzhenjun/p/6686173.html
Copyright © 2020-2023  润新知