¿Por qué java solicita inicializar las variables cuando es local?

Por favor, consulte el código de abajo. El método printTest () está imprimiendo el valor predeterminado de las variables sin inicializar, pero cuando se trata del método principal, java solicita la inicialización de la variable. ¿Alguien puede explicar por qué?

   public class Test1 {

    public static void main(String[] args) {   
      int j;
      String t;

      System.out.println(j);
      System.out.println(t);
    }
  }


  public class Test2 {

   int i;
   String test;

  public static void main(String[] args)   {   
    new Test().printTest();
  }

   void printTest()   {
     System.out.println(i);
     System.out.println(test);
  }

  }