获取时间戳是使用System.currentTimeMillis()还是使用new Date().getTime()(阿里开发规范)?

1.阿里规范

在阿里的Java开发手册中强制要求使用System.currentTimeMillis()

2.为什么(源码详解)

new Date().getTime()它实际上也是调用的System.currentTimeMillis(),源码分析。

这个fastTime是它的成员变量,在new Date()的时候就被赋值了。

扩展一下这个transient这个关键字,它是为了保护数据的就是在对象被序列化的时候,该字段不参与序列化,为null,那么反序列话时就获取不到数据,比如用户有个密码的字段,如果你将该用户user对象序列化到文件中,一旦文件被获取就有可能****密码(敏感信息)泄露的问题。虽然实际开发不考虑,此处作为了解。可能它源码设计时考虑到时间戳可能会被作为很多重要信息的唯一标识,并且不参与序列化也能减少数据的传输

最终fastTime的值也就是System.currentTimeMillis()。所以还不如直接调用System.currentTimeMillis()去获取时间戳效率更高,性能也好一点,因为new Date()的时候去做了很多事情,给它的很多变量去判断赋值等等。

3.什么时候使用new Date()

这个里面包含了很多方法和信息,alt+7查看类结构,例如可以获取年月日并且可以看出也已经废弃了,转换特定格式的时间这个没提供(一般用LocalDateTime的format方法),所以一般来说这个使用很少,看一下就行了。

相关推荐
Rust语言中文社区几秒前
【Rust日报】 Danube Messaging - 云原生消息平台
开发语言·后端·rust
kaikaile19953 分钟前
微电网两阶段鲁棒优化经济调度MATLAB实现
开发语言·matlab
liuyao_xianhui5 分钟前
优选算法_栈_删除字符中的所有相邻重复项_C++
开发语言·数据结构·c++·python·算法·leetcode·链表
逝水如流年轻往返染尘7 分钟前
JAVA中的内部类
java·开发语言
深蓝轨迹11 分钟前
黑马点评--达人探店模块
java·spring boot·redis
always_TT13 分钟前
C语言中的布尔值:_Bool与stdbool.h
c语言·开发语言
!停18 分钟前
C++入门基础—类和对象3
java·数据库·c++
寂静or沉默21 分钟前
Java程序员技术面试:如何清晰描述项目难点?逻辑模板!Java的原因与解决方案最新发布!
java·开发语言·面试
Z.风止25 分钟前
Large Model-learning(1)
开发语言·笔记·git·python·学习
Sgf22738 分钟前
第15章 网络编程
开发语言·网络·php