Bird
Raised Fist0
Javaprogramming~10 mins

This keyword usage in Java - Interactive Code Practice

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to print the current object's name using this keyword.

Java
public class Person {
    String name;
    public Person(String name) {
        this.name = name;
    }
    public void printName() {
        System.out.println([1].name);
    }
}
Drag options to blanks, or click blank then click option'
Aobj
Bsuper
Cself
Dthis
Attempts:
3 left
πŸ’‘ Hint
Common Mistakes
Using 'super' instead of 'this' to access current object's fields.
Using undefined variable names like 'self' or 'obj'.
2fill in blank
medium

Complete the constructor to call another constructor in the same class using this keyword.

Java
public class Box {
    int width, height;
    public Box() {
        this(10, 20);
    }
    public Box(int width, int height) {
        this.width = width;
        this.height = height;
    }
    public void printSize() {
        System.out.println("Width: " + width + ", Height: " + height);
    }
}
Drag options to blanks, or click blank then click option'
Aself
Bsuper
Cthis
Dparent
Attempts:
3 left
πŸ’‘ Hint
Common Mistakes
Using 'super' to call constructors in the same class.
Calling constructor after other statements.
3fill in blank
hard

Fix the error by completing the code to correctly refer to the instance variable value when parameter name is the same.

Java
public class Counter {
    int value;
    public void setValue(int value) {
        [1].value = value;
    }
}
Drag options to blanks, or click blank then click option'
Athis
Bsuper
CCounter
Dself
Attempts:
3 left
πŸ’‘ Hint
Common Mistakes
Using parameter name directly causing assignment to itself.
Using 'super' or class name incorrectly.
4fill in blank
hard

Fill both blanks to complete the method that returns the current object's string representation using this keyword.

Java
public class Point {
    int x, y;
    public Point(int x, int y) {
        this.x = x;
        this.y = y;
    }
    public String toString() {
        return "Point(" + [1].x + ", " + [2].y + ")";
    }
}
Drag options to blanks, or click blank then click option'
Athis
Bsuper
Cself
Dobj
Attempts:
3 left
πŸ’‘ Hint
Common Mistakes
Using 'super' which refers to parent class.
Using undefined variables like 'self' or 'obj'.
5fill in blank
hard

Fill all three blanks to complete the constructor chaining and instance variable assignment using this keyword.

Java
public class Rectangle {
    int width, height;
    public Rectangle() {
        this([1], [2]);
    }
    public Rectangle(int width, int height) {
        [3].width = width;
        this.height = height;
    }
}
Drag options to blanks, or click blank then click option'
A10
B20
Cthis
Dsuper
Attempts:
3 left
πŸ’‘ Hint
Common Mistakes
Using 'super' instead of 'this' for constructor chaining.
Assigning instance variables without 'this' when shadowed.

Practice

(1/5)
1. What does the this keyword refer to in a Java class?
easy
A. A static method
B. The current object instance
C. A superclass object
D. A local variable

Solution

  1. Step 1: Understand the role of this

    The this keyword always points to the current object instance inside a class.
  2. Step 2: Differentiate from other options

    It does not refer to static methods, superclass objects, or local variables.
  3. Final Answer:

    The current object instance -> Option B
  4. Quick Check:

    this = current object instance [OK]
Hint: Remember: this means "this object" [OK]
Common Mistakes:
  • Confusing this with static context
  • Thinking this refers to superclass
  • Assuming this is a local variable
2. Which of the following is the correct way to use this to call another constructor in the same class?
easy
A. call(this);
B. super();
C. this.call();
D. this();

Solution

  1. Step 1: Identify constructor call syntax

    In Java, calling another constructor in the same class uses this(); as the first statement.
  2. Step 2: Eliminate incorrect options

    super(); calls superclass constructor, this.call(); is invalid syntax, and call(this); is not a constructor call.
  3. Final Answer:

    this(); -> Option D
  4. Quick Check:

    Constructor chaining uses this(); [OK]
Hint: Use this(); to call another constructor [OK]
Common Mistakes:
  • Using super(); instead of this();
  • Trying to call constructor like a method
  • Placing this(); not as first statement
3. What will be the output of the following code?
class Test {
  int x = 10;
  void printX() {
    int x = 20;
    System.out.println(x);
    System.out.println(this.x);
  }
  public static void main(String[] args) {
    new Test().printX();
  }
}
medium
A. 10\n20
B. 20\n20
C. 20\n10
D. 10\n10

Solution

  1. Step 1: Identify local and instance variables

    Inside printX(), local x is 20, instance x is 10.
  2. Step 2: Understand this.x usage

    System.out.println(x); prints local 20, System.out.println(this.x); prints instance 10.
  3. Final Answer:

    20 10 -> Option C
  4. Quick Check:

    Local x = 20, this.x = 10 [OK]
Hint: Local variable hides instance; use this for instance [OK]
Common Mistakes:
  • Confusing local and instance variables
  • Ignoring this keyword
  • Expecting both prints to be same
4. Identify the error in the following code snippet:
class Sample {
  int value;
  Sample(int value) {
    value = value;
  }
}
medium
A. The constructor does not assign parameter to instance variable
B. Syntax error: missing this keyword
C. Cannot have parameter and instance variable with same name
D. No error, code works fine

Solution

  1. Step 1: Analyze assignment in constructor

    The statement value = value; assigns the parameter to itself, not to the instance variable.
  2. Step 2: Correct usage with this

    To assign parameter to instance variable, use this.value = value;.
  3. Final Answer:

    The constructor does not assign parameter to instance variable -> Option A
  4. Quick Check:

    Missing this. causes no instance update [OK]
Hint: Use this.variable = variable; to assign correctly [OK]
Common Mistakes:
  • Assuming parameter assigns instance variable automatically
  • Thinking same names cause syntax error
  • Ignoring need for this keyword
5. Consider the following class:
class Point {
  int x, y;
  Point() {
    this(0, 0);
  }
  Point(int x, int y) {
    this.x = x;
    this.y = y;
  }
  void move(int x, int y) {
    x = x;
    this.y = y;
  }
  String display() {
    return "(" + this.x + ", " + this.y + ")";
  }
  public static void main(String[] args) {
    Point p = new Point();
    p.move(5, 10);
    System.out.println(p.display());
  }
}

What will be the output when running the main method?
hard
A. (0, 10)
B. (5, 10)
C. (0, 0)
D. Compilation error

Solution

  1. Step 1: Understand constructor chaining

    The no-arg constructor calls this(0, 0); setting x=0 and y=0.
  2. Step 2: Analyze move method

    Inside move, x = x; assigns parameter to itself, so instance x remains 0. this.y = y; updates instance y to 10.
  3. Step 3: Check display output

    Returns string with instance variables: (0, 10).
  4. Final Answer:

    (0, 10) -> Option A
  5. Quick Check:

    this.x unchanged, this.y updated [OK]
Hint: Assign instance vars with this.var = var; inside methods [OK]
Common Mistakes:
  • Assuming x = x; updates instance variable
  • Ignoring constructor chaining effect
  • Expecting both coordinates to update