System.out.println(new Date()); 打印有关问题

System.out.println(new Date()); 打印问题
刚学java 有点不明白。

这是怎么打印出来的。   new Date()创建的是一个Date对象  返回值是该对象的地址还是其它?

调用println是怎么打印成字符串的。书上是介绍是自动转换成了String。 这是怎么一个转换流程。

是调用的Date的api接口。 还是类型的自动转换?
------解决思路----------------------
System.out.println(new Date()); 打印有关问题
java.util.Date中重写了toString方法。 
------解决思路----------------------
PrintStream 的println(Object x) 实现

public void println(Object x) {
        String s = String.valueOf(x);
        synchronized (this) {
            print(s);
            newLine();
        }
 }

继续跟

public static String valueOf(Object obj) {
        return (obj == null) ? "null" : obj.toString();
}

必须有toString 方法,这也是默认调用的