Salve a tutti,
vorrei contribuire anche io in questa discussione, più che altro per cercare di rendere un po' più chiare le idee a @federico992.
Il mio primo consiglio è di studiare il linguaggio Java su (Thinking in Java, 4th edition di Bruce Eckel), nella prima parte viene spiegato il concetto di oggetto in linea prima teorica e poi "tradotta" in java.
Java è un linguaggio ad oggetti, il che comporta la conoscenza teorica di concetti importanti come l'ereditarietà, interfaccia, binding dinamico e altre cose valide per il paradigma ad oggetti in generale.
Per ogni linguaggio di programmazione sono importanti 3 concetti (sintassi, semantica, pragmatica).
dal mio punto di vista la questione del this può essere inserito nel concetto di pragmatica, in quanto a livello sintattico può essere anche omesso (infatti il compilatore non ne blocca la compilazione).
Pragmatica vuol dire soprattutto coerenza nella scelta dei nomi delle variabili e altri costrutti del linguaggio (ad esempio se sappiamo apriori che un ciclo esegue un numero finito di iterazioni è meglio usare il costrutto for invece del while) in modo tale da aiutare la comprensione del codice ad altri programmatori ma anche a se stessi.
il this viene usato per rifersi a variabili (proprietà) della classe usate nei metodi della classe, per distinguerle dai parametri formali dei metodi.
Quindi this.nome = nome fa capire che con this.nome si sta riferendo ad una proprietà della classe stessa e che con =nome al parametro del metodo.
Questo concetto viene inteso meglio quando studierai l'ereditarietà, in tal caso incotrerai un'altra keyword chiamata super.
Spero di non aver confuso ulteriormente le idee a @federico992.
ciao e a presto