new Date().getTime()和System.currentTimeMillis()对比
我在工作中,看项目组的代码时,在代码中会发现一个有趣的现象,有使用new Date().getTime()来获取时间戳的, 也有使用System.currentTimeMillis()来获取时间戳的,回想一下,好像我平日写代码也是想起哪种方式就用什么方式写。仔细思考一下,两者有什么区别吗?有没有哪个是最优的方式?
解决疑惑最优方式就是看源码,打开java.util.Date的源码可以发现,无参构造函数如下:
public Date() {
this(System.currentTimeMillis());
}
new Date()来获取当前时间更多的是因为我们使用习惯导致经常第一时间想到用它来获取当前时间;
java.util.Date其实是设计来作为格式化时间,以面向对象的方式获取与时间有关的各方面信息,例如:获取年月份、小时、分钟等等比较丰富的信息
获取时间戳的扩展
在Java中,还可能见到另外一种获取时间的方式:
Calendar.getInstance().getTimeInMillis()
这种方式其实是速度最慢,看其源码就会发现,Canlendar是区分时区的,因为要处理时区问题会耗费很多的时间,而System.currentTimeMillis(),看其源码:
public static native long currentTimeMillis()
这是一个本地方法,其时间来源依赖由操作系统为其做了时区的处理,因此获取时间戳,不需要考虑时区的前提下,它是最优选择。
这里多说一句,System类是一些与系统相关的属性和方法的集合, 而且在System类中所有的属性和方法都是静态的,直接使用System调用即可, 调用System类性能相对更优越,很多方法也都是非常有用的,例如:
* src 是要复制的数组,
* srcPos 是从要复制的数组的第几个开始,
* dest 是复制到那,
* destPos 是复制到的数组第几个开始,
* length 是需要复制的长度
*/
public static native void arraycopy(Object src, int srcPos,
Object dest, int destPos, int length);
链接:https://www.jianshu.com/p/5efbdc579f3d
new Date().getTime()和System.currentTimeMillis()对比的更多相关文章
- new Date().getTime()和System.currentTimeMillis()的区别
在Java中,new Date().getTime()和System.currentTimeMillis()都是用来获取当前时间的,并可以用DateFormat转成对应的时间格式,代码如下. impo ...
- java: new Date().getTime() 与 System.currentTimeMillis() 与 System.nanoTime()
java使用new Date()和System.currentTimeMillis()获取当前时间戳 在开发过程中,通常很多人都习惯使用new Date()来获取当前时间,使用起来也比较方便,同时 ...
- Java 中时间处理 System.currentTimeMillis()
import org.testng.annotations.Test;import java.text.ParseException;import java.text.SimpleDateFormat ...
- 系统当前时间system.currenttimemillis与new Date().getTime() 区别
system.currenttimemillis //取到毫秒数,并且执行效率高 new Date().getTime()没他精确
- Java进阶(十六)使用new Date()和System.currentTimeMillis()获取当前时间戳
java使用new Date()和System.currentTimeMillis()获取当前时间戳 在开发过程中,通常很多人都习惯使用new Date()来获取当前时间,使用起来也比较方便,同时还可 ...
- Java中使用new Date()和System.currentTimeMillis()获取当前时间戳的区别(转)(Java进阶-性能提升)
在开发过程中,通常很多人都习惯使用new Date()来获取当前时间,使用起来也比较方便,同时还可以获取与当前时间有关的各方面信息,例如获取小时,分钟等等,而且还可以格式化输出,包含的信息是比较丰富的 ...
- java使用new Date()和System.currentTimeMillis()获取当前时间戳(转载)
转自:http://www.cnblogs.com/wuchen/archive/2012/06/30/2570746.html 在开发过程中,通常很多人都习惯使用new Date()来获取当前时间, ...
- 关于System.currentTimeMillis()
一.时间的单位转换 1秒=1000毫秒(ms) 1毫秒=1/1,000秒(s)1秒=1,000,000 微秒(μs) 1微秒=1/1,000,000秒(s)1秒=1,000,000,000 纳秒(ns ...
- date.getTime()
Date date = new Date(); System.out.println(date.getTime()); 输出结果是1210745780625 编译时间当时时间大概是2008年5.14好 ...
随机推荐
- cvte春招测试面试记录
cvte春招测试面试记录,挂在了综合面试(hr面)...尽量回忆面试的问题(可能不完全). 技术面一面: 1.自我介绍 2.根据实习项目问,智能客服怎么测正确率之类的. 3.测试人脸解锁 4.测试微信 ...
- C#中枚举的使用
一.什么是枚举类型 枚举类型(也称为枚举):该类型可以是除 char以外的任何整型(重点). 枚举元素的默认基础类型为 int.准许使用的枚举类型有 byte.sbyte.short.ushort.i ...
- kafka producer 0.8.2.1 示例
package test_kafka; import java.util.Properties; import java.util.concurrent.atomic.AtomicInteger; i ...
- WordCount程序与测试
Github地址: https://github.com/hcy6668/wordCount PSP表格: PSP PSP阶段 预估耗时(分钟) 实际耗时(分钟) Planning 计划 60 40 ...
- Redis的基本知识
Redis: 1. 概念:开源的高性能键值对数据库, 提供多种键值对数据类型:字符串.(离散)哈希.列表.集合.有序集合类型 内部储存与持久化:内存的读写速度远高于磁盘:自身提供持久化机制(RDB.A ...
- 结对作业收获_core组
收获:编码之前必须的思考是逃不掉的,而且这一步是磨刀不误砍柴工,而且会加速以后的步骤 分析: 首要重要的事情是:需要完成的功能,理清逻辑关系.我们要随机产生一定要求的算式,并且计算出算式的值. 其次的 ...
- web APIS
WEB API系列: 很多人都很迷惑,既然有了WCF为什么还要有WEB API?WEB API会不会取代WCF? 就我的看法,WCF提供的是一种RPC实现的集合,WCF的设计更多地考虑了SOA的场 ...
- php字符串转数组
下面代码包括了含有中文汉字的字符. function str2arr($str) { $length = mb_strlen($str, 'utf-8'); $array = []; for ($i= ...
- 桂林电子科技大学第三届ACM程序设计竞赛 G 路径
链接:https://ac.nowcoder.com/acm/contest/558/G来源:牛客网 小猫在研究树. 小猫在研究路径. 给定一棵N个点的树,每条边有边权,请你求出最长的一条路径,满足经 ...
- Excel修改证件照图片背景色
在实际生活中,我们常常需要把白底证件照更改为蓝底或红底.操作步骤只需4步! 工具/原料 Excel 方法/步骤 第1步:插入白底证件照 单击[插入]---[图片],选择图片保存的位置, ...