Я смотрю на код ниже и нашел что-то странное:
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 { }
. Почему это действительно? Я не вижу, как этот код будет или должен быть вызван.
При запуске this он также создает x y c g
, почему вызов static { }
вызывается перед конструктором последовательности?