标签:长度 源码 div 使用 面向 角度 instance calendar 当前时间
我在工作中,看项目组的代码时,在代码中会发现一个有趣的现象,有使用new Date().getTime()来获取时间戳的, 也有使用System.currentTimeMillis()来获取时间戳的,回想一下,好像我平日写代码也是想起哪种方式就用什么方式写。仔细思考一下,两者有什么区别吗?有没有哪个是最优的方式?
解决疑惑最优方式就是看源码,打开java.util.Date的源码可以发现,无参构造函数如下:
public Date() {
this(System.currentTimeMillis());
}
在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);
new Date().getTime()和System.currentTimeMillis()对比
标签:长度 源码 div 使用 面向 角度 instance calendar 当前时间
原文地址:https://www.cnblogs.com/cxiang/p/10536712.html