Статические блоки выполняются в том виде, в котором они определены, и до того, как статические поля инициализированы.
Как вы можете видеть, вы используете
static int z = 100;
static int a;
внутри статического блока, прежде чем они будут правильноinitialized.
В любом случае доступ к этим полям static
, вызывающим m1
внутри блока static
, просто выведет 0
, так как они не инициализированы свойством и используются значения по умолчанию.