20145335郝昊 《Java程序设计》第7周学习总结

教材学习内容总结

  • 认识时间与日期

    • 格林威治标准时间:简称GMT时间,参考格林威治皇家天文台的标准太阳时间。

    • 世界时:简称UT,借由观测远方星体跨国子午线。

    • 国际原子时:简称TAI,将秒的时间定义为铯原子辐射震动9192631770周耗费的时间。

    • 世界协调时间:简称UTC,保持TAI与UT的时间不要差距过大。

    • Unix时间:Unix系统时间表示法,用以表达时间轴上某一瞬间。

    • epoch:简称为epoch毫秒数,从某个特定时代开始,时间轴上某一瞬间。

    • 儒略历:用来取代罗马力,修正了隔三年设置一闰年的错误,改采四年一闰。

    • 格里高利历:改革了儒略历。

    • ISO 8601标准:并非年历系统,而是时间日期表示方法的标准,用以统一时间日期的数据交换格式。

    • 时区:大致来说经度15度偏移一个小时,考虑了UTC偏移的时间表示上,通常会标识Z符号。

  • Date与Calendar

    • 关于Date:

      1. 想要取得系统时间,使用System.CurrentTimeMillis()方>法,返回的是long类型整数。

      2. Date是偏向机器的时间观点。

      3. 有两个函数可以调用,一个可使用epoch毫秒数构建,另一个为无自变量构造函数,内部亦是使用SystemcurrentTimeMillis()取得epoch函数,调用getTime()可取得内部保存的epoch毫秒数。

    • 关于DateFormat:

      1. java.text.DateFormat用来有关字符串时间格式的处理。

      2. 操作类是java.text.SimpleDateFormat,可直接构建SimpleDateFormat实例。其好处是可以使用模式字符串自定义格式。

      3. 有个prase()方法,可以按照构建SimpleDateFormat时指定的格式,将指定的字符串剖析为Date实例。

    • 关于Canlendar:

      1. 可以用其取得某个时间日期信息,或者是对时间日期进行操作,可以使用其实例。

      2. 可以使用getTime()方法取得Date实例

      3. 要想取得年月日日期时间字段,可以使用get()方法并指定Clendar上的字段枚举常数。

      4. 在取得一个Clendar实例后可以采用add()方法,来改变Clendar时间。

      5. GregoricanClendar是Clendar的子类。

      6. 日历时间可以使用 GregoricanClendar的setGregoiranChange()方法来修改,设为Date(Long.MAX_VALUE)就是纯粹的儒略历,设为Date(Long.MIN_VALUE)就是纯粹的格里高利历。

      7. 想要比较两个Clendar的时间日期先后,可以使用after()或before()方法。

    • 关于TimeZone:

      1. 使用默认时区,可以使用java.util.TimeZone的getDefault()来取得默认时区信息。

      2. 可以通过setTimeZone()方法设定TimeZone

  • JDK8新时间日期API

    • 机器时间观点的API:

      Date实例应该只代表机器观点的时间信息,真正可靠的信息只有内含的epoch毫秒数。如果取得Date实例,应该通过Date的getTime()取得epoch毫秒数,这样就不会混肴。

      主要为java.time。设计了Instant类,用以代表自定义的java epoch 精度基本上是毫秒,但可以添加奈秒。

    • 人类时间观点的API:

      1. LocalDateTime包括日期与时间、LocatDate只有日期、LoucatTime只有时间。

      2. 当补上时区信息后,如果组合起来的时间实际上不存在,ZoneDateTime会自动更正。

      3. 在新的时间与日期API中,UTC偏移量与时区的概念是分开的。offsetDateTime单纯代替UTC偏移量,使用ISO 8601。

      4. 可用Year表示年、用YearMonth表示年月、只想表示月可以使用Month、想表示月日可以使用MonthDay。想取得代表月份的数字,不要使用oridinal()方法,因为其是enum再定义时的顺序,从零开始,想要去的代表月份的数要通过getValue()方法。
      5. 实际上以上方法都操作了Temporal接口。

  • 对时间的运算:

    1. ofPattern是java.time.format.DateFormatter的静态方法。

    2. 对于年、月、星期、日的日期的差,则使用Preriod类定义。

    3. ofDays()、ofMonths()、ofWeeks()其实是Preriod的静态方法。

    4. plus()方法接受java.time.temporal.TemporalAmount实例,而TemporalAmount的操作类也就是Preiod与Duration。

    5. plus()另一方法接受java.time.temporal.temporalUnit实例,java.time.temporal.ChronoUnit是TemporalUnit实作类,使用enum实作。

    6. TemporalAccessor定义了只读的时间对象读取操作、实际上Temporal是TemporalAccessor子接口,增加了对时间的处理操作。

    7. 年历系统设计:java.time.chrono操作了java.time.chrono.Chronlogy接口的类。

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

学习本章有关时间与日期的,没有之前的java语法那么繁杂,规定自然而然也会少一些。但是还是存在一些问题的。

其中对于理解机器时间的概念和人类时间的概念存在问题。同样对于Date实例真正代表的并不是日期,最接近的概念应该是时间轴上特定的某一瞬间。时间精=精度是毫秒,是UTC时间1970年1月1日0时0分0毫秒至某个特定瞬时的毫秒差。

其实理解有关时间与日期的API,同样也是把握住java是面向对象设计的而不是面向过程这一要点,理解起来知识点就会简单许多。

对于TemporalAmount和TemporalUnit要把握住继承了哪个类,操作了哪个接口,注意各自的操作特点掌握分清各个方法的用途。

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

本周是关于日期与时间,学习难度不大,主要仔细跟着书上的步骤来,代码的难度也比原来小了许多,在书上范例代码调试的问题和解决基本没有存在问题。

但是通过代码的调节发现不论是那一块的知识与运用方法都要掌握准确,不然很容易会出错误。

本周代码托管截图

本周代码托管截图如下




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

学习java已经很久了,掌握的硬知识也有很多了。但是在这么久的学习java要把握住java是面向对象的,不然在理解一些类和一些方法的时候会存在问题。不论是哪些方面的知识总是记清楚之间的用法和具体区别。通过这门课程不光要学习很多的知识点,而且更要学会这种学习方式,一种遇到问题去解决问题的思维过程,这样才是有益的收获。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 200/200 2/2 20/20
第二周 300/500 2/4 18/38
第三周 360/1000 3/7 22/60
第四周 400/1300 2/8 30/90
第五周 200/1400 1/10 24/95
第六周 270/1500 2/11 32/100
第七周 190/1700 3/12 26/110 学会使用idea单元测试

参考资料

20145335郝昊《java程序设计》第7周学习总结的更多相关文章

  1. 20145335郝昊 Java学习心得 密码学代码复写

    20145335郝昊 Java学习心得 密码学代码复写 本学期我们学习了现代密码学这门课程,在上课的时候接触到了很多种类型的密码体制,对于一些典型很通用的密码体制有自己的学习和设计.不论是从密码体制还 ...

  2. 20155210潘滢昊 2016-2017-2《Java程序设计》第一周学习总结

    20155210 2016-2017-2<Java程序设计>第一周学习总结 教材学习内容总结 1.1.1: 本节主要讲了Java的由来,1995年5月23日是Java公认的诞生日.还有版本 ...

  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. Android得到SD卡文件夹大小以及删除文件夹操作

    float cacheSize = dirSize(new File(Environment.getExternalStorageDirectory() + AppConstants.APP_CACH ...

  2. [Android Tips] 26. Multiple Maven repositories in Gradle

    来自 https://gradleproject.wordpress.com/2013/02/14/multiple-maven-repositories-in-gradle/ This DOESN' ...

  3. 不想分页怎么办??-->页面数据的滚动加载

    在前几天的一次前台数据展示的时候 为了更好的用户的体验 就想着做一个数据的滚动加载功能 于是简单的查询了网上的实现方式 基本都是在页面加载的时候绑定scroll事件 然后判断页面触底的时候 进行aja ...

  4. 页面加载异常 清除浏览器静态文件 js css 缓存 js动态加载js css文件,可以配置文件后辍,防止浏览器缓存

    js清除浏览器缓存的几种方法 - 兔老霸夏 - 博客园 https://www.cnblogs.com/Mr-Rocker/p/6031096.html js清除浏览器缓存的几种方法   一.CSS和 ...

  5. Spring Data之Hello World

    1. 概述 SpringData : 注意目标是使数据库的访问变得方便快捷;支持NoSQL和关系数据存储; 支持NoSQL存储: MongoDB(文档数据库) Neo4j(图形数据库) Redis(键 ...

  6. B. Mike and Fun---cf548B(暴力求解)

    题目链接:http://codeforces.com/problemset/problem/548/B 有一个n*m的矩阵,里面只有0和1,现在有Q个改变,每次都把(x,y)这点变为相反的点(0变1, ...

  7. 以EJB谈J2EE规范

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/xiaoduishenghuogo/article/details/24800703 接触J2EE的时 ...

  8. SQL学习笔记。

    数据库视图: 视图是虚表,是从一个或几个基本表(或视图)中导出的表,在系统的数据字典中仅存放了视图的定义,不存放视图对应的数据. 视图是原始数据库数据的一种变换,是查看表中数据的另外一种方式.可以将视 ...

  9. 除去DataTable中的空行!

    昨天向数据库中导入Excel数据时  由于空行 总是报错!下面附上两种去除空行的方法! 方法一.某行某列值为空时 DataView dv = dt.DefaultView;              ...

  10. Visual Studio 起始页面关闭新闻等

    [工具]->[选项]->[环境]->[启动] 将“下载内容的时间间隔”一项的勾选去掉,然后确定保存.这样,就大功告成啦