关于日期类的选型问题:LocalDateTime 与 Date 的区别

之前有同事见我还在用Date类处理日期,便嘲笑道:1.8之后有了DateTime类,也可以存储日期,还用Date是不是out了?

最近自己写了些代码,正好想到这个问题,于是就去看了下源码,先说结果,LocalDateTime,LocalDate,LocalTime 为静态类,Date 为动态类,好比与 String 与 StringBuilder 的区别。

LocalDateTime 类使用 LocalDate,LocalTime 类来实现存储时间的功能,而主要存储值用的成员变量都是被final修饰的,源码如下:

LocalDateTime部分源码

可见 date,time 都为final修饰。其实直接看这个类的介绍也可以得知这个结果,第二段就说明了这是一个静态类。

LocalTime源码如下:

LocalTime部分源码
LocalDate源码如下:

LocalDate部分代码
上面可以看出,LocalDate 与 LocalTime 也是静态类(在其代码介绍里面也有提到)。

而 java.util.Date(区分java.sql.Date)类其本质时利用一个非序列化的long型时间戳来存储日期的,因此其是动态类。

源码如下:

java.util.Date部分源码
从其构造方法可知,fastTime 既为其存储时间用的变量,其只有一个 transient 修饰,因为其通过实现Serializable类来实现序列化功能,因此 fastTime 在整个 Date 类序列化时,是不会序列化的。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值