new Date().getTime() && System.currentTimeMills() 以及其他获取时间戳的区别

1、new Date().getTime() 也可以获取时间戳,但是会有性能上的损耗,原因如下:

public Date() {
    this(System.currentTimeMillis());
}

  这是 Date的无参构造,其实就是调用了System.currentTimeMills(),然后再传入自己的有参构造,从性能上考虑,如果只是获取时间戳,不考虑时区影响,直接调用System.currentTimeMills()更好一些。

2、System.currentTimeMills()为什么不能考虑时区?

public static native long currentTimeMillis()

从源码中我们可以看出,该方法是一个本地方法 (native 表示java调用非java代码的接口),其时间来源依赖为其做了时区的处理,因此获取时间戳,在不考虑时区的情况下,他是最优选择。

3、另外一种获取时间的方式----日历(calendar)

Calendar.getInstance().getTimeInMillis()

这种方式速度比较慢,原因是Calendar是区分时区的,因为要处理时区问题会耗费很多时间。 

你可能感兴趣的:(JavaSE——知识总结)