equals() VS ==

equals() VS ==

equals() is a method that compares the actual content of the object.

"==" is an operator that compares the memory or reference location of an object in the heap.

equals()

  • The String equals() function compares two strings based on their data/content. It is defined in java.lang package.

  • It returns true if all of the contents of both strings match. It returns false if none of the characters match.

public class Hello {
   public static void main(String []args) {
      String s1 = "Welcome";
      String s2 = "Welcome";
      String s3 = new String ("welcome");
      System.out.println(s1.equals(s2));
      System.out.println(s2.equals(s3));
   }
}

Output:

true
false

"==" operator

  • "==" checks if both objects point to the same memory location.

  • Just like equals() method, "==" also returns a boolean output. Since "==" is an operator, it is not overrideable, and hence we avoid using it for comparing two objects.

class Hello {
    public static void main(String[] args)
    {
        System.out.println(10 == 20); //int type
        System.out.println('a' == 'b'); //char type
        System.out.println('a' == 97.0); //char and double type
        System.out.println(true == true); //bool type
    }
}

Output:

false
false
true
true

Key difference between equals() and ==

"==" Operatorequals() Method
"==" is an operator in Java and hence it can't be overridden.equals() is a method in Java and hence it can be overridden.
majorly used to compare the reference values and objects.used to compare the actual content of the object.
takes O(1) time for comparison.takes O(1) time for normal objects and O(n) time for String objects.
"==" operator cannot be overridden.equals() method and can be overridden.
throws compile time error if the two variables are not of the same data type.returns a "false" value if the objects are not of the same type.