Was bewirkt "this.variableA = variableA"

Lokale Variablen überschreiben Membervariablen

Code:
Variante A (falsch);
class User {
   private String name;
   
   public User(String name) {
      name = name;
   }
}


Variante B (richtig);
class User {
   private String name;
   
   public User(String name) {
      this.name = name;
   }
}

Da lokale Variablen primär behandelt werden ist in der Variante A das Problem
das die Membervariable name der Klasse User nie gesetzt wird.
Das einzige was passiert ist die lokale Variable name bekommt den Wert von sich
selber zugewiesen. Was natürlich unsinn ist.

Variante B macht demnach klar das die Variable name des aktuellen Objectes (this)
den Wert der lokalen Variable name zugewiesen bekommt, was im Sinne des erfinders ist.

this zeigt immer auf das aktuelle Object:

Code:
class User {
   private String name;
   
   public User(String name) {
      this.name = name;
   }
   
   public String getName() { 
      return name;
    }
}


User userA = new User("Heinrich"); 
User userB = new User("Detlef);

In der Methode getName() gibt es keine lokale variable name, weshalb hier das this nicht benötigt wird. Sprich getName() gibt tatsächlich den Wert der Membervariable name zurück.
Sprich im Constructor steht this.name hier erstmal für userA.name und später für userB.name
Weshalb userA.getName().equals("Heinrich")==true und userB.getName().equals("Detlef");
 
Zurück