Hola MrClassic
La palabra 'this', es una palabra reservada en Java.
Su propósito es referirse a la propia clase, la clase en que se está escribiendo el código.
La linea
this
sin nada más, no tiene ningún significado.
Esta instrucción:
this ("",0,"","");
en la clase Estudiante es lo mismo que:
Estudiante("",0,"","");
Que es invocar al constructor de la clase con 4 parámetros de tipo String, int, String y String (en ese orden)
Aunque esta instrucción (Estudiante("",0,"","");) dará error.
Así, la única manera de llamar a un constructor específico dentro de la propia clase es usando la palabra reservada 'this'
Si estuvieramos en la clase Profesor
this ("",0,"","");
sería lo mismo que:
Profesor("",0,"","");
------------------
Tu constructor 1:
public Estudiante(){
this("",0,"","");
}
Para Java quiere decir: Ejecuta el constructor que tiene estos 4 parámetros. Es decir el constructor que no tiene parámetros lo que hace es llamar al de cuatro parámetros y se los aporta dentro de los paréntesis.
Resumiendo. Si tu clase solo tiene el primer constructor (sin parámetros), y en su código llama a un constructor de 4 parámetros que no se ha escrito, es normal que de error de compilación, lo mismo que si llamas al método dimeLaHora() si no lo creaste en esta clase.
Resumen final:
Primer caso.
El constructor sin parámetros para la clase Estudiante es:
public Estudiante(){
nombre = "";
edad = 0;
direccion = "";
telefono = "";
}
cuando en la clase no hay más constructores.
Segundo caso.
Si en la clase existe el siguiente constructor con parámetros:
public Estudiante(String valorNombre, int valorEdad, String valorDireccion, String valorTelefono){
nombre = valorNombre;
edad = valorEdad;
direccion = valorDireccion;
telefono = valorTelefono;
}
Y en nuestra clase decidimos que también tenga constructor sin parámetros, éste puede ser así:
public Estudiante(){
nombre = "";
edad = 0;
direccion = "";
telefono = "";
}
O así:
public Estudiante(){
this("",0,"","");
}
Espero haber solventado algunas de tus dudas.
Saludos