Language 3 of 10 · Topic 0.4

Operators, String Concatenation & Object Equality (== vs equals())

1Concept

Java provides standard arithmetic and logical operators. Critical rule: == compares primitive values or reference memory addresses; .equals() compares semantic object contents. Strings in Java are immutable objects managed in the String Pool.

2Architecture Diagram

String Pool Comparison:
 s1 = "Java" (Points to Pool Addr 0x100)
 s2 = "Java" (Reuses Pool Addr 0x100) ──► s1 == s2 is TRUE
 s3 = new String("Java") (New Heap Addr 0x200) ──► s1 == s3 is FALSE, but s1.equals(s3) is TRUE!

3Code Example

Stage 0 Language Foundations
public class OperatorsDemo {
    public static void main(String[] args) {
        String s1 = "CareerAI";
        String s2 = "CareerAI";
        String s3 = new String("CareerAI");

        System.out.println("s1 == s2 (String Pool check): " + (s1 == s2));
        System.out.println("s1 == s3 (Reference check): " + (s1 == s3));
        System.out.println("s1.equals(s3) (Content check): " + s1.equals(s3));

        // Ternary operator
        int score = 85;
        String grade = score >= 80 ? "Distinction" : "Pass";
        System.out.println("Score " + score + " Grade: " + grade);
    }
}

4Expected Output

s1 == s2 (String Pool check): true
s1 == s3 (Reference check): false
s1.equals(s3) (Content check): true
Score 85 Grade: Distinction

5Key Takeaways

  • Always use .equals() or Objects.equals(a, b) to compare strings and objects in Java.
  • String concatenation inside loops creates temporary StringBuilder instances; use explicit StringBuilder.
  • Logical && and || perform short-circuit boolean evaluation.