Метод main() это точка входа в программу. Но это метод. И этот метод принадлежит какому-то классу. Соответственно, чтобы вызвать этот метод, Java-машина сначала должна загрузить содержащий его класс. А чтобы загрузить этот класс, нужно сначала загрузить все классы от которых он зависит. А в процессе загрузки любого класса нужно инициализировать статические переменные, и выполнить статические инициализаторы. Поэтому, до запуска метода main(), выполняется куча кода. Например так:
publicclassMainClass{static{System.out.println("Hello World!");}// end of static initializerpublicstaticvoid main (finalString... args){// nothing to do}// end of method}// end of class
тут есть задачи, где прямо так и пишут, что метод мейн не участвует в тестировании, а значит все, что вы там напишете - это будет чисто для вас, чтобы вы могли проверить вашу программу, погонять ее на разных значениях.
тесты вообще не запускают метод мейн ваш, чаще всего. они просто берут объект, вызывают метод и смотрят как изменились поля объекта и/или что было выведено в консоль
main()это точка входа в программу. Но это метод. И этот метод принадлежит какому-то классу. Соответственно, чтобы вызвать этот метод, Java-машина сначала должна загрузить содержащий его класс. А чтобы загрузить этот класс, нужно сначала загрузить все классы от которых он зависит. А в процессе загрузки любого класса нужно инициализировать статические переменные, и выполнить статические инициализаторы. Поэтому, до запуска методаmain(), выполняется куча кода. Например так: Детально процесс запуска Java-машины описан в разделе JLS -> 12.1. Java Virtual Machine Startup.