Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Date()构造函数如何返回值_Java_Date_Constructor - Fatal编程技术网

Java Date()构造函数如何返回值

Java Date()构造函数如何返回值,java,date,constructor,Java,Date,Constructor,当我调用System.out.println(newdate())时我不是在类Date中调用构造函数吗?如果我错了,请纠正我。那么在这种情况下,它是如何返回值的呢?new Date()是一个构造函数调用的表达式 这样一个表达式的结果保证是一个新构造的对象。(或异常)它打印一个值,因为您正在隐式调用新构造的Date对象的toString方法 这相当于以下内容: Date date = new Date(); System.out.println(date); 当然,您正在调用日期构造函数。每

当我调用
System.out.println(newdate())时我不是在类
Date
中调用构造函数吗?如果我错了,请纠正我。那么在这种情况下,它是如何返回值的呢?

new Date()
是一个构造函数调用的表达式


这样一个表达式的结果保证是一个新构造的对象。(或异常)

它打印一个值,因为您正在隐式调用新构造的
Date
对象的
toString
方法

这相当于以下内容:

Date date = new Date();  
System.out.println(date);

当然,您正在调用日期构造函数。每次使用“new”运算符时,都会调用构造函数。您只是没有存储对新创建对象的引用,因此它很快就会被丢弃。 因此发生的情况是:

  • 调用日期构造函数
  • Date的实例被传递给println方法,该方法接受对象参数
  • println方法在日期调用toString()方法并获取字符串 代表性;打印出来
  • 方法返回,date的实例被垃圾收集(最终)

  • 如前所述,您确实在调用
    Date()
    类的构造函数,并隐式调用其
    toString()
    方法。如果您想知道该方法的作用,您需要查看

    构造函数只是将系统时间以毫秒为单位(通常是几十毫秒)作为
    long
    抓取,然后
    toString()
    通过引用中可用的方法来解析它,然后生成一个StringBuilder对象,最终返回给您


    因此,当您调用
    Date()
    对象的构造函数(并隐式调用其
    toString()
    方法)时,在引擎盖下还有很多事情要做。如果您的动机是构建自己的日期解析器,您可以查看相关类的源代码以获得指导,或者您可以简单地调用这些类并让它们完成工作。

    您是,它返回类型为
    date
    的对象,
    println()
    隐式调用
    toString()
    在该对象上。为什么会被否决?仅仅看java标签上的问题就让我很难过,大多数问题至少是-1。java人真的那么讨厌问题吗?@arynaq:这个问题问的是什么还不清楚。@arynaq我不能代表其他反对者发言,但我反对它,因为
    new
    操作符返回一个值的事实是微不足道的。问题是“我知道新操作符调用构造函数,构造函数如何返回值“不管怎样,我现在知道发生了什么,多亏了那些愿意解释的人。虽然是真的,但我认为它没有抓住问题的重点。@Woot4Moo:你对这个不清楚的问题的理解与我不同。@Sotirios Delimanolis我刚才也做了测试。”。谢谢各位。导入java.io.*;类outputobj{public outputobj(){int i;}public String to String(){返回“outPutString\n”}public static void main(String[]args){System.out.println(new outputobj());}给我输出:-)