20145214 《Java程序设计》第7周学习总结

教材学习内容总结

时间的度量

  • 格林威治标准时间(GMT),现已不作为标准时间使用,即使标注为GMT(格林威治时间),实际上谈到的的是UTC(Unix时间)时间。
  • 在1972年引入UTC之前,GMT与UT是相同的。
  • 秒的单位定义时基于TAI。也就是铯原子辐射的振动次数。
  • 世界协调时间(UTC),UTC考虑了地球自转越来越慢而有闰秒修正,确保UTC与UT相差不会超过0.9秒。

年历简介

  • 儒略历修正了罗马历隔三年设置一闰年的错误,改采四年一闰。
  • 格里高利历将儒略历1582年10月4号星期四的隔天,订为格里高利历1582年10月15日星期五。
  • ISO 8601标准采用统一的数据格式。

时间轴上瞬间的Date

  • Date有两个构造函数可以使用,一个可使用epoch毫秒数构建,另一个为无自变量构造函数,内部亦是使用System.currentTimeMillis()取得毫秒数,调用getTime()可取得内部保存的epoch毫秒数值。
  • DateDemo.java运行结果如下。

格式化时间日期的DateFormat

  • DateFormat是个抽象类,其操作类是java.text.SimpleDateFormat,你可以直接构建SimpleDateFormat实例,或是使用DateFormat的getDateInstance()getTimeInstance()、getDateTimeInstance等静态方法,用较简便方式按不同需求取得SimpleDateFormat实例。
  • DateFormatDemo.java运行结果如下。

  • SimpleDateFormatDemo.java运行结果如下。

  • SimpleDateFormat有一个parse()方法,可以按构建SimpleDateFormat时指定的格式,将指定的字符串剖析为Date实例。HowOld.java运行结果如下。

处理时间日期的Calendar

  • Calendar是个抽象类,java.util.GregorianCalendar是其子类,操作了儒略历与格里高利历的混合历,通过Calendar的getInstance()取得的Calendar实例,默认就是取得GregorianCalendar实例。

      Calendar calendar = Calendar.getInstance();
  • 取得的Calendar实例后,用getTime()取得Date实例,如果要取得年月日等时间字段,可以使用get()方法并指定Calendar上的字段枚举常数。

      out.println(calendar.get(Calender.YEAR));
    out.println(calendar.get(Calender.MONTH));
    out.println(calendar.get(Calender.DATE));
  • 在取得一个Calendar的实例后,可以使用add()方法,来改变Calendar的时间。

  • CalendarUtil.java运行结果如下。

设定TimeZone

  • 可以使用java.util.TimeZone的getDefault()来取得默认时区信息。
  • TimeZoneDemo.java运行结果如下。

  • TimeZoneDemo2.java运行结果如下。

机器时间观点的API

  • 真正可靠的信息只有内含epoch毫秒数。同时也可以使用Instant的静态方法now()取得代表Java epoch毫秒数的Instant实例。

人类时间观点的API

  • LocalDateTime包括日期与时间;LocalDate只有日期,如果设定不存在的日期会抛出DateTimeException;LocalTime只有时间。
  • 若需要时区信息,可基于上述三个时间描述的ZoneDateTime和OffsetDateTIme。
  • ZoneDateTimeDemo.java运行结果如下。

  • MonthDemo.java运行结果如下。

对时间的运算

  • TemporalAmount:时间差以Duration定义,日期差以Period定义。
  • HowOld2.java运行结果如下。

  • TemporalUnit:between()方法用于计算时间差。
  • TemporalAccessor定义了只读的时间对象。

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

  • 不清楚ZonedDateTimeDemo.java程序运行结果中数字的含义。

  • ZonedDateTimeDemo.java程序改写如下。

      import static java.lang.System.out;
    import java.time.*; public class ZonedDateTimeDemo2 {
    public static void main(String[] args) {
    LocalTime localTime = LocalTime.of(0, 0, 0);
    LocalDate localDate = LocalDate.of(2016, 4, 16);
    ZonedDateTime zonedDateTime = ZonedDateTime.of(
    localDate, localTime, ZoneId.of("Asia/Shanghai")); out.println(zonedDateTime);
    out.println(zonedDateTime.toEpochSecond());
    out.println(zonedDateTime.toInstant().toEpochMilli());
    }
    }
  • 运行结果如下。

  • 之后又运行了一下之前的DateDemo.java,结果如下。

  • 发现运行出来的数字与ZonedDateTimeDemo2.java的数字相差不多,于是可以判断出原来程序中的数字是机器时间起点至今经过的毫秒数。

代码托管截图如下





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

经过这七周的学习,可以说,我们已经基本学完了Java的基础知识,但是学完并不代表掌握了,如果现在让我独立去编写一个程序,我可能依旧会错误百出。但是在我看来,真正的知识就是在实践的基础上获得的,真正想要掌握这些知识,只能是通过自己独立编写程序来获得。可能第一次编的时候会出现许多的错误,但凡事都有第一次,这次出现的错误,当你思考分析出问题所在之后,下次编的时候就能够避免,经验也是这样通过一点一滴累积起来的。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 200/200 2/2 20/20
第二周 300/500 1/3 20/40
第三周 400/900 1/4 25/65
第四周 1236/2136 1/5 30/95
第五周 1045/3181 1/6 35/130
第六周 1827/5028 2/8 35/165
第七周 234/5028 2/10 30/195

参考资料

20145214 《Java程序设计》第7周学习总结的更多相关文章

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...

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

    20145224陈颢文<Java程序设计>第二周学习总结 教材学习内容总结 一.类型.变量与运算符 1.类型 整数: 可细分为为short整数(占2字节),int整数(占4字节),long ...

随机推荐

  1. centos7安装ftp

    1.服务器初始化检查 检查selinux,firewall,iptables是否开启 1.查看selinux的运行状态 [root@zeq ~] getenforce Disabled 我的现在是关闭 ...

  2. Django学习笔记2

    1.BookInfo.objects.all() objects:是Manager类型的对象,用于与数据库进行交互 当定义模型类时没有指定管理器,则Django会为模型类提供一个名为objects的管 ...

  3. Jquery复选框的全选全不选及选择所有复选框实现全选的复选框

    Jquery代码 $(function () { $(":checkbox.parentfunc").click(function () { //如何获取被点击的那个复选框 $(t ...

  4. Android中的AutoCompleteTextView(随笔提示文本)组件的简单使用

    Android中的随笔提示文本组件AutoCompleteTextView的使用,此组件用于输入文本,然后就会在所配置的适配器中的数据进行查找显示在组件下面. 这里值得注意的是AutoComplete ...

  5. Java Web项目里 classpath 具体指哪个路径

    classpath路径指什么 只知道把配置文件如:mybatis.xml.spring-web.xml.applicationContext.xml等放到src目录(就是存放代码.java文件的目录) ...

  6. Ubuntu中 MySQL 的中文编码问题

    使用Ubuntu在安装好MySQL数据库之后,如果直接创建数据库,再创建数据表,那么是无法向字段插入中文的,会报Incorrect string value错误. c实现编码设置的两种方法: (1)动 ...

  7. centos install rabbitmq

    安装rabbitmq 需要环境上有erlang,没有安装的可以参照下面的内容进行安装: https://www.erlang-solutions.com/resources/download.html ...

  8. 小程序开发-9-Behavior行为与加入缓存系统优化流行页面

    Behavior行为与加入缓存系统优化流行页面 navi组件与移动端触碰区域探讨 触碰区域优化 设计师切图切大点,多余部分变成透明色 前端将可触碰区域变大 解决向左箭头变灰,向右变灰 禁用事件的技巧 ...

  9. Zookeeper原理和实战开发经典视频教程 百度云网盘下载

    Zookeeper原理和实战开发 经典视频教程 百度云网盘下载 资源下载地址:http://pan.baidu.com/s/1o7ZjPeM   密码:r5yf   

  10. 优步UBER司机全国各地奖励政策汇总 (2月8日-2月14日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...