Stell' dir einfach vor, dass das Schlüsselwort `this` eine `final` Variable ist, die du in jeder Instanzmethod (und Konstruktor) automatisch zur Verfügung hast, ohne, dass du sie deklarieren musst.
In dem Fall wäre `a = this` also einfach eine Zuweisung von einer Variablen (in dem Fall `this`) zu einer anderen Variablen (in dem Fall `a`). Daran ist doch nichts besonders. Nur, dass halt automatisch am Anfang jeder Instanzmethod (und Konstruktor) `this` eine Referenz auf das "aktuelle Objekt" beinhaltet.
Hiervon außen vor sind natürlich spezielle Sprachkonstrukte, wie eben Aufruf eines anderen Konstruktors innerhalb eines Konstruktors mit `this(...)`.
Aber zu schreiben `this.a = a`, wenn du sowohl einen Parameter `a` als auch eine Instanzvariable `a` hast, dient dann ja dazu, die Namensauflösung von `a` (mit dem `a` ist per Default sonst immer der Parameter gemeint - innerster Scope) zu ändern, so dass eben die Instanzvariable `a` gemeint ist (bei `this.a`) und nicht der Parameter.