Я смотрел на приведенный ниже код и обнаружил что-то странное:
public class Sequence {
Sequence() {
System.out.print("c ");
}
{
System.out.print("y ");
}
public static void main(String[] args) {
new Sequence().go();
}
void go() {
System.out.print("g ");
}
static {
System.out.print("x ");
}
}
Я ожидал, что это приведет к ошибке компиляции, так как System.out
с "y" не принадлежит просто объявлению метода a { }
. Почему это действительно так? Я не понимаю, как этот код должен или должен называться.
При запуске он x y c g
также производит , почему вызывается static { }
перед конструктором последовательности?