在新关键字上调用函数

Calling function on new keyword

这是我的代码:

import java.util.Date;

class basic {
    public static void main(String[] args) throws IOException {
        String s = new Date().toString();
        System.out.println(s);
        System.exit(0);
    }
}

任何人都可以向我详细解释 JVM 是如何执行行 new Date().toString(); 的。我对 new 如何分配堆并不感兴趣,但我们如何在构造函数 Date() 上使用 .toString() 运算符。提前致谢。

如果我们把代码分成几行并引入局部变量,会更容易理解。这一行:

String s = new Date().toString();

等同于:

Date d = new Date();
String s = d.toString();

你现在看,我们在 Date class 的 实例 上调用 toString() 方法,而不是在构造函数上本身。

new Date().toString(); 被 Java 的编译器解释为 (new Date()).toString()。与 Date a = new Date(); a.toString();

相同