Я переглядаю код нижче і знайшов щось дивне:
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 { }
виклик викликається перед конструктором послідовностей?