Статический блок выполняется, когда классы загружаются, когда нормальные блоки выполняются при создании экземпляра класса, содержащего блок.
Только для записи перед java 7 статических блоков были выполнены до того, как был запущен метод main() в проекте. Но из java 7 main() сначала просматривается. Таким образом, вы получите сообщение об ошибке, если у вас нет основного. Так что I know the static blocks run before main
немного неоднозначно. Метод main() проверяется до выполнения статических блоков, но основное выполнение запускается после обработки статических блоков.
Также нестатические блоки выполняются до вызова соответствующего конструктора. Например
public class Tester {
{
System.out.println("In some random block");
}
static {
System.out.println("In static block");
}
public Tester() {
System.out.println("Constructor");
}
public static void main(String args[]) {
Tester t = new Tester();
}
}
напечатает
In static block
In some random block
Constructor
Почему бы вам не убежать и не увидеть? – SudoRahul
Серьезно, было бы проще запустить этот код в вашей fav IDE. Если у вас его нет, используйте http://ideone.com –
. Более конкретно, статический блок запускается, когда класс загружен ..., который да находится задолго до основного. –