Perché dentro il costruttore....

public persone(String Cognome) {

this(0); // qui chiama il costruttore con interi
this.Cognome=Cognome;
}

...chiami il costruttore con interi come argomenti

Il quale....

public persone(int annonascita) {
this("Non Conosco"); // ora chiamo quello con String
this.annodinascita=annonascita;
}

...chiama ricorsivamente quello con String creando un ciclo

Il codice:

class persone {
public int annodinascita;
public String Cognome=new String();
// Costruttori
public persone(int annonascita) {
this("Non Conosco");
this.annodinascita=annonascita;
}
public persone(String Cognome) {
annodinascita=0;
this.Cognome=Cognome;
}
public persone(int annonascita , String Cognome) {
annodinascita=annonascita;
this.Cognome=Cognome;
}
//Funzione che calcola l'età del soggetto;
public int calcolaeta ( int annoattuale ) {
return ( annoattuale - annodinascita );
}
public static void main(String[] args) {
persone p=new persone(1980);

System.out.println(p.calcolaeta(2002));
}
}