5m left·0%
Reading Time: 5 min
Last Updated: March 9, 2026
Main Ideas: 5
Reading Time: 5 min
Last Updated: March 9, 2026
Main Ideas: 5

Topic 3.9 Notes – this Keyword

Verified for 2027 AP® Computer Science A Exam
Read aloud
It’s how an object refers to itself while one of its instance methods or constructors is running. Most of the time, you use it to fix parameter shadowing, but it also shows up in constructor chaining and when passing the current object around.

1. What this Is

When you create an object:

Book b = new Book("1984");
b.setTitle("Animal Farm");

Inside the constructor and inside setTitle, the keyword this refers to b, the object that’s currently running the code.

Key facts:

  • this is a reference to the current object.
  • It only exists inside instance methods and constructors.
  • this.variableName means “the instance variable that belongs to this object.”

It does not create a new object. It simply points to the one that’s already running the method.

Also important:

  • Static methods do not have this.
    Static methods belong to the class, not to any one object.

2. Resolving Parameter Shadowing

This is where this shows up the most.

The Problem

When a parameter has the same name as an instance variable, the parameter shadows the instance variable.

private String title;

public Book(String title) {
    title = title;  // Problem
}

Both titles refer to the parameter. The instance variable never changes.

This is a very common FRQ mistake.

The Fix

public Book(String title) {
    this.title = title;
}

Now:

  • this.title → the instance variable
  • title → the parameter

That assignment finally updates the object’s field.

Where You Must Use this

  • Constructors with matching parameter names
  • Setter methods:
public void setPages(int pages) {
    this.pages = pages;
}

Where It’s Optional

If there’s no shadowing:

public void addPage() {
    pages++;        // fine
    this.pages++;   // also fine, just clearer
}

AP-style tip: if you see name = name; in answer choices, it’s almost always wrong unless one of them is this.name.

3. Other Uses of this

Passing the Current Object as an Argument

You can send the current object to another method:

public void register(Library lib) {
    lib.addBook(this);
}

Here, this means “send me, the current Book.”

This shows up when objects collaborate in FRQs.

Constructor Chaining with this()

One constructor can call another constructor in the same class.

public Book(String title) {
    this(title, "Unknown");
}

public Book(String title, String author) {
    this.title = title;
    this.author = author;
}

Rules you must remember:

  • this() must be the first line in the constructor.
  • You cannot use this() inside a regular method.
  • You cannot recursively call the same constructor.

If a constructor has anything before this(...), it will not compile.

4. this and Static Context

Static methods belong to the class, not to a specific object.

So this is illegal:

public static void printTitle() {
    System.out.println(this.title);  // ERROR
}

Why? There is no current object.

If you’re ever scanning MC answers and you see this inside a static method, eliminate it immediately.

If you need object data in a static method, pass the object as a parameter:

public static void printTitle(Book b) {
    System.out.println(b.title);
}

5. Returning this for Method Chaining

Sometimes a method returns the current object:

public Book setTitle(String title) {
    this.title = title;
    return this;
}

That allows:

book.setTitle("Dune").setPages(412);

Requirements:

  • The return type must be the class type.
  • You must explicitly write return this;.

Common mistake:

public Book setPages(int pages) {
    this.pages = pages;
    return;   // compile error
}

No return value means no chaining.

Key Takeaways

this always refers to the current object whose method or constructor is running.
Use this.variable when a parameter shadows an instance variable.
this() calls another constructor and must be the first statement.
this cannot be used inside static methods.
Returning this enables method chaining.

AP® is a trademark registered by the College Board, which is not affiliated with, and does not endorse this website.

Notes

1 credit used · 5/5 remaining