Como uma variável estática é acessível antes da declaração?

public class Main {

    static int x = Main.y;
//  static int x = y; //Not allowed; y is not defined
    static int y = x;
    public static void main(String[] args) {
        System.out.println(x);//prints 0
    }
}

Como posso usar a classe, mas não diretamente?

Quando y é definido?

questionAnswers(5)

yourAnswerToTheQuestion