Fork me on GitHub

JackLin的博客

当前位置:首页 > 标签

SpringBoot 14 Spring 2 SpringMVC 3 MyBatis 2 Linux 4 阿里云 13 宝塔 1 Docker 3 ElasticSearch 2 Redis 4 Shiro 0 Dubbo 0 Swagger 0 Thymeleaf 6 数据库 11 MySQL 11 外键 2 Gradle 1 Test 0 Tomcat 1 JavaWeb 7 Ajax 1 注解 3 css 2 报错 3 多数据源 1 Java基础 1 源码 2 Servlet 1 JSP 1 环境搭建 8 RabbitMQ 1 七牛云 1 Edit.md 1 图像识别 4 英语 2 Zookeeper 1

阿里巴巴泰山版Java开发手册_打卡记录

  • 2020-04-21
  • 132
  • 阿里巴巴
此系列博客对应 2020-4-22 刚推出的 “阿里巴巴台式版Java开发手册”,都是一些比较基础的Java开发规范。 官方对应网址:https://developer.aliyun.com/topic/java2020 ### 打卡第一天,时间日期规约 #### 课后习题 选项 A 正确,下面分析一下: > A选项: `LocalDate.now()` 返回了一个 `LocalDate` 对象,那就直接看他的 `lengthOfYear()` 方法,里面是: ``` return (isLeapYear() ? 366 : 365) ``` 看名字就知道,判断是否是闰年,然后在返回对应的年份。再看 `LocalDate.isLeapYear()`,发现返回的是 `IsoChronology.isLeapYear()`,然后在 `IsoChronology.isLeapYear()` 里面,终于看到了一段很亲切的代码: ``` return ((prolepticYear & 3) == 0) && ((prolepticYear % 100) != 0 || (prolepticYear % 400) == 0) ``` 就是用来判断年份是否是闰年啊。所以调这个方法他会帮我们自动判断是平年还是闰年,妙啊! > B选项: `new Date().getTime()` 之后,看一下 Date 的源码,发现在 Date 的无参构造中调用了有参构造,并将 `System.currentTimeMillis()` 作为参数传递,然后有参构造中又讲参数赋值给了 `fastTime` 变量,然后调用 `getTime()` 时返回的就是 `fastTime`。作者可能认为没有必要如此麻烦,故选择了简单的方式。 > C 选项: Y表示的是当天所在的周属于的年份,原因文章里已解释应该使用小写的 y。 同时我在 JDK8 的文档里面关于SimpleDateFormat 类找到这样一句话: ``` “A week year is in sync with a WEEK_OF_YEAR cycle. All between the first and last weeks (inclusive) have the same week year value. Therefore, the first and last of a week year may have different calendar year values.”; ``` 说白就就是一个星期的头几天和后几天可能处于不同的年份。 > D选项: 看一下,发现在 getHours() 里面直接是 ``` “throw new java.lang.IllegalArgumentException()” ``` 怪不得不推荐使用