Java: неявно ли вызывается конструктор, когда JVM запускает метод main ()? - PullRequest
0 голосов
/ 11 февраля 2011

Рассмотрим следующий базовый класс:

public class ConstructorExample {

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

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

}

При выполнении приведенного выше кода вызывается «Конструктор вызван».печатается только один раз.Очевидно, что конструктор вызывается явно, когда вызывается метод main.

Однако почему конструктор не вызывается, когда JVM загружает класс и запускает приложение изначально?

Ответы [ 3 ]

6 голосов
/ 11 февраля 2011

Нет для выполнения main() метод jvm не создает объект класса, поэтому метод main() равен static

он выполняется с

ConstructorExample ce = new ConstructorExample();

для подтверждения комментария ниже строки

\\ConstructorExample ce = new ConstructorExample();

1 голос
/ 11 февраля 2011

Зачем нужно вызывать main() метод через объект? В конце концов, это static метод.
Назначение метода main(), являющегося static, заключается в том, что JVM не требует создания какого-либо объекта для вызова метода main().

Итак, когда JVM загружает файл .class, JVM ищет метод main() для запуска. Когда он видит один, он запускает выполнение программы. После этого конструктор вызывается (здесь, в данном случае), когда объект создается, и, следовательно, печатает «Constructor called» только один раз.

1 голос
/ 11 февраля 2011

Почему JVM вызывает конструктор при запуске? «main» - это статический метод, для которого не требуется создавать экземпляр ConstructorExample.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...