当我呼叫System.out.println(new Date());
时,我没有在类Date
中调用构造函数?如果我错了,请纠正我。那么在这种情况下它是如何返回价值的呢?
答案 0 :(得分:3)
它打印一个值,因为您隐式调用新构造的toString
对象的Date
方法。
这相当于以下内容:
Date date = new Date();
System.out.println(date);
答案 1 :(得分:2)
当然,您正在调用Date构造函数。每次使用“new”运算符时,都会调用构造函数。您只是不存储对新创建的对象的引用,因此它很快就会被收集。 那么会发生什么:
答案 2 :(得分:1)
如上所述,您确实在调用Date()
类的构造函数,并隐式调用其toString()
方法。如果你想知道做什么,你会想看看here。
构造函数通过引用sun.util.calendar.CalendarDate
中可用的方法,以long
和toString()
解析系统时间,以毫秒(通常在几十毫秒内,显然)抓取系统时间。然后生成一个StringBuilder对象,最终返回给你。
因此,当您调用Date()
对象的构造函数(并隐式调用其toString()
方法)时,会有更多的事情发生。如果您的动机是构建自己的日期解析器,则可以查看所涉及的类的源代码以获得指导,或者您只需调用这些类并让它们完成工作。
答案 3 :(得分:0)
new Date()
是一个构造函数调用的表达式。
这种表达式的结果保证是新构造的对象。 (或例外)