Por que na static não da erro?

Por que na variavel static não da erro(compile error), somente na variavel y??? Diz que não tem nenhum valor atribuido(iniciada)???

public class Test{
  static int x;
  public static void main(String args[]){
    int y;
    System.out.println(x);
    System.out.println(y);
  }
}

Porque não é uma variável local então é inicializada automaticamente.
Já as variáveis locais (de método) não são inicializadas, por isso o erro.

Porque uma variável local, isto é, uma variável pertencente à um método
deve sempre ser inicializada antes de ser usada.
Ja a variável x, é uma variável da classe, não precisando ser inicializada.

Então o valor dela e como null?

Se voceê declarar y fora do método, e não o marcar como static, para poder
ter acesso à essa variável na seu método main, terá que instanciar a sua
classe Test, e referenciar a variável y, através de sua instância do objeto.

public class Test{
  static int x;
  private int y;
  public static void main(String args[]){
    Test t = new Test();
    System.out.println(x);
    System.out.println(t.y);
  }
} 

Não, como ela é inteira o valor inicial é 0.

[]'s