this keyword

In Java, the this keyword is a reference variable that is used to refer to the current object within a method or constructor. It is particularly useful in situations where instance variables and parameters have the same names, helping to distinguish between the two and avoid naming conflicts.

Key Uses of the this Keyword

Distinguishing Between Instance Variables and Parameters
public class MyClass {
    private int value;
    // Constructor with parameter and instance variable having the same name
    public MyClass(int value) {
        this.value = value; // 'this' refers to the instance variable
    }
}Code language: PHP (php)
Calling Another Constructor
public class MyClass {
    private int value;
    // Parameterized constructor
    public MyClass(int value) {
        this.value = value;
    }
    // Default constructor calling the parameterized constructor
    public MyClass() {
        this(0); // Calls the parameterized constructor with a default value
    }
}Code language: PHP (php)

The this keyword is used to call another constructor from the same class. In this example, the default constructor uses this(0) to call the parameterized constructor with a default value.

Returning the Current Object
public class MyClass {
    private int value;
    public MyClass setValue(int value) {
        this.value = value;
        return this; // Returning the current object for method chaining
    }
}Code language: PHP (php)

In some cases, methods can return the current object (using return this;), enabling method chaining.

Passing the Current Object as a Parameter
public class MyClass {
    private int value;
    public void compareValues(MyClass other) {
        if (this.value == other.value) {
            System.out.println("Values are equal");
        } else {
            System.out.println("Values are not equal");
        }
    }
}Code language: PHP (php)

The this keyword can be used to pass the current object as a parameter to another method or constructor.

Here’s an example that demonstrates this keyword

class Person {
    private String name;
    private int age;
    // Parameterized constructor
    public Person(String name, int age) {
        this.name = name; // 'this' refers to the instance variable 'name'
        this.age = age;   // 'this' refers to the instance variable 'age'
    }
    // Method to display information about the person
    public void displayInfo() {
        System.out.println("Name: " + this.name); // Using 'this' is optional here
        System.out.println("Age: " + age);         // 'this' is optional since there is no local variable 'age'
    }
    // Method to compare ages with another Person object
    public void compareAges(Person otherPerson) {
        if (this.age == otherPerson.age) {
            System.out.println(this.name + " and " + otherPerson.name + " have the same age.");
        } else {
            System.out.println(this.name + " and " + otherPerson.name + " have different ages.");
        }
    }
}
class ThisDemo{
    public static void main(String[] args) {
        // Creating two Person objects
        Person person1 = new Person("Paani", 22);
        Person person2 = new Person("Mahesh", 21);
        // Displaying information using the displayInfo method
        System.out.println("Person 1:");
        person1.displayInfo();
        System.out.println("\nPerson 2:");
        person2.displayInfo();
        // Comparing ages using the compareAges method
        System.out.println("\nComparing Ages:");
        person1.compareAges(person2);
    }
}

Output:

D:\>java ThisDemo
Person 1:
Name: Paani
Age: 22
Person 2:
Name: Mahesh
Age: 21
Scroll to Top