调用Java构造方法如何取值?Date对象为何默认是当前日期?
关于Java中new Date()自动获取当前日期的疑问解答
示例代码
import java.util.Date; class ch { public static void main(String[] args) { Date today = new Date(); System.out.println(today); } }
疑问
仅通过
new Date()创建对象,为何变量today会自动变为当前日期?我分析了Date类但仍无法理解其中原理,希望得到解答。
解答
这是因为Date类的无参构造方法内部默认会完成当前时间的初始化操作:
- 无参构造方法会调用
System.currentTimeMillis(),这个方法能获取到当前时间与1970年1月1日00:00:00 UTC的毫秒差值(也就是时间戳)。 - 接着它会把这个时间戳传递给
Date的有参构造方法,将其作为对象内部存储的核心时间数据。
换句话说,new Date()不是“凭空”得到当前日期的,而是底层帮你自动执行了「获取系统当前时间戳→初始化Date对象」的流程,所以创建出来的对象自然就代表当前的日期时间。
另外你看到的可读日期输出,是因为Date类重写了toString()方法,会把内部的毫秒数格式化为人类易读的日期字符串格式。
内容的提问来源于stack exchange,提问作者pradeep
相关产品推荐
相关产品推荐

