Java:当JVM运行main()方法时是否隐式调用构造函数?

时间:2011-02-11 10:57:06

标签: java constructor

考虑以下基本类:

public class ConstructorExample {

    public ConstructorExample(){
        System.out.println("Constructor called.");
    }

    public static void main(String[] args) {
        ConstructorExample ce = new ConstructorExample();
    }

}

执行上面的代码时,“构造函数被调用”。只打印一次。显然,在调用main方法时会显式调用构造函数。

但是,当JVM加载类并最初启动应用程序时,为什么不调用构造函数?

3 个答案:

答案 0 :(得分:6)

执行main()方法jvm不会构造类的对象,这就是为什么main()方法是static

正在执行

ConstructorExample ce = new ConstructorExample();

确认下面的评论

\\ConstructorExample ce = new ConstructorExample();

答案 1 :(得分:1)

为什么JVM会在启动时调用构造函数? “main”是一个静态方法,它不需要创建一个ConstructorExample实例。

答案 2 :(得分:1)

为什么需要通过对象调用main()方法?毕竟,它是一种static方法 main()方法为static的目的是JVM不需要创建任何用于调用main()方法的对象。

因此,当JVM加载.class文件时,JVM会查找要运行的main()方法。当它看到一个时,它开始执行程序。在它之后,在创建对象时调用构造函数(在这种情况下),因此只打印一次“Constructor called”。