Bonus

== Operator in Java

The == operator in Java is used to compare two values — but what it compares depends on the type of data.

1. Primitive Data Types

For primitive types (int, float, char, boolean, etc.), == compares the actual values.

Example:

class PrimitiveComparison {
    public static void main(String[] args) {
        int a = 5;
        int b = 5;
        System.out.println("a == b: " + (a == b));
    }
}

Output:

a == b: true

Explanation:

  • Since both a and b hold the same value (5), == returns true.

2. Reference Types (Objects)

For objects, == compares the memory addresses (references) — i.e., whether both variables point to the same object in memory, not whether their contents are equal.

Example:

class ObjectComparison {
    public static void main(String[] args) {
        String s1 = new String("hello");
        String s2 = new String("hello");
        System.out.println("s1 == s2: " + (s1 == s2));           // false
        System.out.println("s1.equals(s2): " + s1.equals(s2));  // true
    }
}

Output:

s1 == s2: false

s1.equals(s2): true

Explanation:

  • == checks if s1 and s2 point to the same object (they don’t).
  • .equals() checks if contents are the same (they are).

3. String Literal Pool (Special Case)

When using string literals, Java optimizes and reuses them using a String pool, so == might return true.

Example:

class StringPoolCheck {
    public static void main(String[] args) {
        String s1 = "hello";
        String s2 = "hello";
        System.out.println("s1 == s2: " + (s1 == s2));
    }
}

Output:

s1 == s2: true

Explanation:

  • Both s1 and s2 refer to the same object in the string pool, so == returns true.

4. Comparing with null

Example:

class NullCheck {
    public static void main(String[] args) {
        String str = null;
        System.out.println("str == null: " + (str == null));
    }
}

Output:

str == null: true

Explanation:

  • You can safely use == to check if a reference is null.

Bonus Tip:

Use == only for primitives or reference checks.

For object content comparison, always use .equals():

Example:

import java.util.Objects;
class NullSafeEquals {
    public static void main(String[] args) {
        String a = null;
        String b = null;

        System.out.println(Objects.equals(a, b));  // true
    }
}

Output:

true

Explanation:

  • Objects.equals(a, b) is a null-safe method to compare two objects:
  • If both are null, it returns true.
  • If only one is null, it returns false.
  • Otherwise, it checks a.equals(b).

This is much safer than:

a.equals(b); // NullPointerException if a is null

Summary:

Type == Compares Use .equals()? Example Result
Primitive Actual value No 5 == 5 → true
Object Memory reference (address) Yes new String("a") == new String("a") → false
String Literal Pooled reference (optimized) Careful "abc" == "abc" → true
null Checks if reference is null No str == null → true

Welcome to ShikshaSanchar!

ShikshaSanchar is a simple and helpful learning platform made for students who feel stressed by exams, assignments, or confusing topics. Here, you can study with clarity and confidence.

Here, learning is made simple. Notes are written in easy English, filled with clear theory, code examples, outputs, and real-life explanations — designed especially for students like you who want to understand, not just memorize.

Whether you’re from school, college, or someone learning out of curiosity — this site is for you. We’re here to help you in your exams, daily studies, and even to build a strong base for your future.

Each note on this platform is carefully prepared to suit all levels — beginner to advanced. You’ll find topics explained step by step, just like a good teacher would do in class. And the best part? You can study at your pace, anytime, anywhere.

Happy Learning! – Team ShikshaSanchar