Java预习6

一 Java 8以前日期时间API存在的问题

作为开发者,经常需要处理日期时间。在Java 8以前,相信你对 java.util.Date 、java.util.Calendar 、java.util.GregoiranCalendar 和 java.text.SimpleDateFormat 这四大类非常熟悉,它们分别用于处理日期、日历、公历、日期时间格式化。

这四个类有好多陷阱和坑,比如

非线程安全:这四大类都不是线程安全的。开发者在使用这些类时必须自己处理多线程并发问题。
设计不佳 :一方面日期和日期格式化分布在多个包中;另一方面,java.util.Date 的默认日期为1970年1月1日,没有统一性。而且 Date 类也缺少直接操作日期的相关方法。
时区处理困难:因为设计不佳,开发人员不得不编写大量代码来处理时区问题。
还有其它一些问题,如Calendar类月份从零开始计算等。

面对种种问题,Java 8 终于重新设计了所有日期时间、日历及时区相关的 API。并把它们都统一放置在 java.time 包和子包下。并作出了以下改进

新的日期时间 API 是线程安全的。不仅没有 setter 方法,而且任何对实例的变更都会返回一个新的实例,保证原来的实例不变。
新的日期时间 API 提供了大量的方法,用于修改日期时间的各个部分,并返回一个新的实例。
借鉴了第三方日期时间库joda很多的优点。
在时区方面,新的日期时间 API 引入了 域 ( domain ) 这个概念。

同时 Java 8 还针对原来复杂的 API 进行重新组合和拆分,分成了好多个类。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值