public class MyThisTest {
  private int a;
  public MyThisTest() {
    this(42); // calls the other constructor
  }
  public MyThisTest(int a) {
    this.a = a; // assigns the value of the parameter a to the field of the same name
  }
  public void frobnicate() {
    int a = 1;
    System.out.println(a); // refers to the local variable a
    System.out.println(this.a); // refers to the field a
    System.out.println(this); // refers to this entire object
  }
  public String toString() {
    return "MyThisTest a=" + a; // refers to the field a
  }
}
Then calling frobnicate() on new MyThisTest() will print
1
42
MyThisTest a=42
So effectively you use it for multiple things:
- clarify that you are talking about a field, when there's also something else with the same name as a field
 
- refer to the current object as a whole
 
- invoke other constructors of the current class in your constructor