Wie ist eine statische Variable vor der Deklaration zugänglich?

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
    }
}

Wie komme ich durch die Klasse, aber nicht direkt?

Wann ist y definiert?