Normal
Die Aufrufe der Methoden werden oben auf den Stackframe gestapelt. Also ausgehend von main println ganz unten kommt zuerst dein x(2) auf den Stack, danach (x1) danach x(0). Dann werden die Aufrufe wieder in die andere Richtung abgearbeitet, dh du hast ein return 0, da der Aufruf von println aber ganz unten im Stack liegt, ist die Ausgabe erst als letztes dran. Nach deinem return 0, wird diese Methode vom Stack geschmissen und die Methode drunter fertig abgearbeitet (return1). Das wiederholt sich und erst dann ist dein sysout.println wieder an der Reihe, was jetzt 2 ausgibt.