AP CSA Compareto vs. Equals

compareTo() vs equals() in AP CSA

Two of the most commonly confused String methods on the AP exam. equals() answers a yes/no question. compareTo() answers a “who comes first?” question. Knowing which to use — and what they return — is tested every year.

⚠ Exam Trap: Using == to compare Strings compares memory addresses, not content. It may return false even when two Strings have identical characters. Always use .equals() or .compareTo().

equals() — True or False

equals() returns a boolean: true if the two Strings have identical characters, false otherwise. Case matters.

String a = "hello";
String b = "hello";
String c = "Hello";

System.out.println(a.equals(b));  // true
System.out.println(a.equals(c));  // false  (case-sensitive)
System.out.println(a == b);       // true in this case (string pool)
                                  // but NOT reliable -- never use ==

Use equalsIgnoreCase() when case should not matter:

System.out.println(a.equalsIgnoreCase(c));  // true

compareTo() — Returns an int

compareTo() returns an integer, not a boolean. The sign tells you the relationship:

Return value Meaning
Negative Calling string comes before the argument alphabetically
Zero Strings are equal
Positive Calling string comes after the argument alphabetically
String x = "apple";
String y = "banana";

int result = x.compareTo(y);
System.out.println(result);    // negative (apple comes before banana)

if (x.compareTo(y) < 0) {
    System.out.println(x + " comes first");
}
How compareTo() works: It compares Unicode values character by character. If the first characters differ, it returns their Unicode difference. Uppercase letters have smaller Unicode values than lowercase (‘A’ = 65, ‘a’ = 97).

When to Use Which

Use case Method
Check if two Strings are the same .equals()
Check same, ignoring case .equalsIgnoreCase()
Sort alphabetically / check order .compareTo()
Compare two Strings for identity Never ==

📝 Practice Question 1

What is the output of the following code?

String p = "Cat";
String q = "cat";
System.out.println(p.compareTo(q));

📝 Practice Question 2

Which of the following CORRECTLY checks whether String word equals "Java"?

I. if (word == "Java")
II. if (word.equals("Java"))
III. if (word.compareTo("Java") == 0)

✅ Exam Tip: On the AP exam, compareTo() questions almost always ask about the sign of the return value, not the exact number. Focus on: negative = comes first, zero = equal, positive = comes after.

Get in Touch

Whether you're a student, parent, or teacher — I'd love to hear from you.

Just want free AP CS resources?

Enter your email below and check the subscribe box — no message needed. Students get daily practice questions and study tips. Teachers get curriculum resources and teaching strategies.

Typically responds within 24 hours

Message Sent!

Thanks for reaching out. I'll get back to you within 24 hours.

🏫 Welcome, fellow educator!

I offer curriculum resources, practice materials, and study guides designed for AP CS teachers. Let me know what you're looking for — whether it's classroom materials, a guest speaker, or Teachers Pay Teachers resources.

Email

[email protected]

📚

Courses

AP CSA, CSP, & Cybersecurity

Response Time

Within 24 hours

Prefer email? Reach me directly at [email protected]