Хотя это маленький вопрос, который нужно задать, хотел понять это странное поведение! Ниже приведен код и поведение кода, который находится в процессе обсуждения (через вывод консоли). ВыходПочему код в пустых фигурных скобках выполняется сначала даже перед конструктором класса?
public class EmptyBracesWithinClass {
public static void main(String[] args) {
EmptyBraces eb = new EmptyBraces();
System.out.println("SYSO within main() method");
}
}
class EmptyBraces {
{
System.out.println("SYSO within empty braces");
}
public EmptyBraces() {
System.out.println("SYSO within constructor() method");
}
}
консоли:
SYSO within empty braces
SYSO within constructor() method
SYSO within main() method
вопрос здесь, почему бы кусок кода в пустых скобках получить выполнен первым во время создания экземпляра объекта из EmptyBraces
класса (хотя он никогда не объявлен STATIC
явно)?
В следующий раз: выполните некоторые предварительные исследования; и серьезно; Я не понимаю, почему люди выказывают очевидный дубликат ... – GhostCat
для получения дополнительной информации (http://stackoverflow.com/questions/12550135/static-block-vs-initializer-block-in-java) – emotionlessbananas
Примечание: Это не статический инициализатор, а инициализатор экземпляра. – Jesper